1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c语言十六进制字符串转整数 C语言-提取字符串中的十六进制数字并转换为一个十进制整

c语言十六进制字符串转整数 C语言-提取字符串中的十六进制数字并转换为一个十进制整

时间:2021-09-21 08:27:28

相关推荐

c语言十六进制字符串转整数 C语言-提取字符串中的十六进制数字并转换为一个十进制整

问题描述:提取字符串中的十六进制数字并转换为一个十进制整数输出

源代码:

/*十六进制转换成十进制*/

#include

int main(void)

{

int i,k;

char hexad[80],str[80];

long number;

printf("Enter a string:");

i=0;

while((str[i]=getchar())!='\n')

i++;

str[i]='\0';

/*过滤非十六进制字符后生成新字符串*/

k =0;

for(i=0;str[i]!='\0';i++)

if(str[i]<='9'&&str[i]>='0'||str[i]<='f'&&str[i]>='a'||str[i]<='F'&&str[i]>='A'){/*判断是数字字符*/

hexad[k]=str[i];

k++;

}

hexad[k]='\0';

/*输出十六进制新字符串*/

printf("New string:");

for(i=0;hexad[i]!='\0';i++)

putchar(hexad[i]);

printf("\n");

/*转换为十进制数*/

number=0;

for(i=0;hexad[i]!='\0';i++){

if(hexad[i]<='9'&&hexad[i]>='0')

number=number*16+hexad[i]-'0';

if(hexad[i]<='F'&&hexad[i]>='A')

number=number*16+hexad[i]-'A'+10;

if(hexad[i]<='f'&&hexad[i]>='a')

number=number*16+hexad[i]-'a'+10;

}

printf("Number=%ld\n",number);

return 0;

}

运行结果:

进制转换

程序心得:

if(hexad[i]<='f'&&hexad[i]>='a')

number=number*16+hexad[i]-'a'+10;

这里要注意“+10”

程序参数:

输出大小: 148.888671875 KiB

编译时间: 0.31s

c语言十六进制字符串转整数 C语言-提取字符串中的十六进制数字并转换为一个十进制整数输出...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。