void Hex2Byte(uchar*str,ucha*byte)
{
uchar tmp;
while(*str!=0)
{
tmp=((*str)<<4)&0xf0;
str++;
if(*str==0)
{
*byte=(tmp>>4)&0x0f;
return;
}
tmp+=(*str)&0x0f;
*byte=tmp;
byte++;
}
}
这个破程序就是流行很多书籍的一个关于十六进制字符串转换成字符数组的一个小程序,
但是我怎么也看不懂,我自我反思是因为,我对单片机存储字母的方式不甚了解。如果
哪位大侠对这个比较了解,可以结合这个程序给我上一课,好吗?
万分感激
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
十六进制字符串 和 字符数组 有什么区别,结尾的 吗?
按我的理解,HEX应该是类似于某些工具生成的HEX文件,如果那样的话,这个程序是不正确的.
首先主机把它变成十六进制数字:0x23;即二进制数字:00100011;
好,针对二进制的数字高四位:0010,它的十六进制数字是“2”
此时我查表得“2”的ASII码是:00110010,(当然单片机是用自己的程序算出ASII码值)即(0x32)将它赋值给SBUF,发出去
然后,针对二进制的数字低四位:0011,它的十六进制数字是“3”
此时查表得“3”的ASII码是:00110011,即(0x33),然后将将它赋值给SBUF,发出去
上面这个过程就是把字符数组转换为十六进制字符串的基本过程,当然发完所有的东西以后
尾部还要发一个"