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

Python09

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,再逐位转换为十进制。

C语言字符串数组本身就是用十六进制存储的,只是你看到的都是一个个字符,但计算机实际存储的是字符对应的ASCII码。字符串数组最后一个单元的内容是'/0',十六进制就是0x00。

使用串口输出输出时,直接把字符串首地址str给串口,数组长度用strlen(str)+1(+1是要把结尾/0计算上),打开串口调试工具,用文本显示,就可看到字符串数组;用十六进制显示,可以看到字符串的十六进制ASCII码