C语言如何把11位16进制字符串转成16进制数?

Python018

C语言如何把11位16进制字符串转成16进制数?,第1张

这个就是一个16进制数转10进制的程序

先以字符串方式逐字符读入16进制数

然后对每个读入的字符依次做判断

t=s[i]-'0'

//临时变量t为当前判断的字符串的ascii码值减去字符'0'的ascii码值,这一步的作用是将字符型转换为整型以供计算

if(t<=9)

k=k*16+s[i]-'0'

//如果t≤9,说明原字符为'0'~'9',转换后直接得到对应数字0~9,因此直接将这个数字转换为十进制即可:k=k*16+s[i]-'0'即将当前位转换为十进制

else

k=k*16+s[i]-'a'+10

//如果t>9,说明原字符为'a'~'f',转换后不能得到对应数字,必须通过s[i]-'a'+10把字符'a'~'f'转换为数字10~15,再逐位转换为十进制。

/*

我们正在组建局域网

CE D2 C3 C7 D5 FD D4 DA D7 E9 BD A8 BE D6 D3 F2 CD F8

Press any key to continue

*/

#include <stdio.h>

#include <string.h>

char *Change(char *t,char *s) {

char i,chs

for(i = 0 s[i] ++i) {

chs = s[i] & 0X0F

t[3 * i + 2] = ' '

if(chs > 9) t[3 * i + 1] = chs - 10 + 'A'

else t[3 * i + 1] = chs + '0'

chs = (s[i] & 0XF0) >> 4

if(chs > 9) t[3 * i] = chs - 10 + 'A'

else t[3 * i] = chs + '0'

}

t[3 * i] = '\0'

return t

}

int main() {

char *s = "我们正在组建局域网",t[60] // 

printf("%s\n",s)

printf("%s\n",Change(t,s))

return 0

}