谁能帮我写个小程序,字符串转化的(带字母),自己写的太复杂了

Thirty 2009-09-30 08:02:32
比如字符串: "1A" 转化成整数是: 26

我所说的字符串是字母混合数字的,如果是纯数字字符串转化那比较简单,就不要发过来了
...全文
83 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
沐浴-vip 2009-10-01
  • 打赏
  • 举报
回复
代码复杂度,不仅仅是看代码的长短,主要是研究代码的时间复杂度和空间复杂度,其实进制转换都是些常规算法
Thirty 2009-09-30
  • 打赏
  • 举报
回复
我和你差不多,呵呵
沐浴-vip 2009-09-30
  • 打赏
  • 举报
回复
有点问题,我改了下!
#include "stdio.h"
void main()
{
char str[]="1A";
int n=0;
int result=0;
while(str[n]!='\0')
{ result*=16;
switch(str[n])
{
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':result+=str[n]-'0';break; //这里用+=,下面一样
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':result+=str[n]-'a'+10;break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':result+=str[n]-'A'+10;break;
}
n++;
}
printf("result=%d\n",result);
}
沐浴-vip 2009-09-30
  • 打赏
  • 举报
回复
char str[]="1A";
int n=0;
int result=0;
while(str[n]!='\0')
{ result*=16;
switch(str[n])
{
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':result=str[n]-'0';break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':result=str[n]-'a'+10;break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':result=str[n]-'A'+10;break;
}
n++;
}
kondykuang 2009-09-30
  • 打赏
  • 举报
回复
while(*temp !='\0') //这样好些
kondykuang 2009-09-30
  • 打赏
  • 举报
回复

//常规实现,没调试
int myatoi( const char * str)
{
const char *temp=str;
int result=0;
while(*temp)
{
if(*temp>='0' && *temp<='9')
result=result*16+*temp-'0';
else if(*temp>='A' && *temp<='F')
result=result*16+*temp-'A'+10;
else if(*temp>='a' && *temp<='f')
result=result*16+*temp-'a'+10;
else
{
result=0;
break;
}
temp++;
}
return result;
}
Thirty 2009-09-30
  • 打赏
  • 举报
回复
晕,好像给错分了
Thirty 2009-09-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 acgirl 的回复:]
char str[] = "1A";
int n;
sscanf(str, "%X", &n);
printf("%d", n);

运行这段看看吧
[/Quote]
我最先试了sscanf的,可能那时有点晕,这个可以实现,
aosawa 2009-09-30
  • 打赏
  • 举报
回复
把字符串先转化成char类型的数组,在把char类型的数组按照整形输出不可以吗?
oyster2008 2009-09-30
  • 打赏
  • 举报
回复

int main()
{
int a=strtol("1A",NULL,16);
cout<<a<<endl;
}
ACgirl 2009-09-30
  • 打赏
  • 举报
回复
char str[] = "1A";
int n;
sscanf(str, "%X", &n);
printf("%d", n);

运行这段看看吧
oyster2008 2009-09-30
  • 打赏
  • 举报
回复
atoi不就可以了吗,选择十六进制

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧