求助大神 帮我解释一下 这是一个将16进制转成10进制的程序
uint32_t h2d(char *strHex) {uint32_t dwValue = 0;
char *pCh = strHex;
while (*pCh != 0) {
dwValue <<= 4;
if (*pCh >= '0' &&*pCh <= '9')
dwValue += *pCh - '0';
else if (*pCh >= 'A' &&*pCh <= 'F')
dwValue += *pCh - 'A' + 10;
else if (*pCh >= 'a' &&*pCh <= 'f')
dwValue += *pCh - 'a' + 10;
else
return 0;
pCh++;
}
return dwValue;
}
if (*pCh >= '0' &&*pCh <= '9')
dwValue += *pCh - '0';//将字符 0-9 转换为数值 0-9
else if (*pCh >= 'A' &&*pCh <= 'F')
dwValue += *pCh - 'A' + 10; //将字符 A-F 转化为 10-15
else if (*pCh >= 'a' &&*pCh <= 'f')
dwValue += *pCh - 'a' + 10; //将字符 a-f 转化为 10-15
最后,比如:8A7C 就能转换为8107 12
然后就是(((8<<4)+10)<<4+7)<<4+12== 35452 Zoologist 发表于 2017-6-7 23:11
if (*pCh >= '0' &&*pCh = 'A' &&*pCh = 'a' &&*pCh
谢谢我再自己琢磨琢磨
uint32_t h2d(char *strHex)/ dwValue <<= 4 / dwValue += *pCh - 'A' + 10;
这三句不太明白 这个dwValue <<= 4意思是每次把一个数进行移位然后合成对应大小的十进制数,有点类似权值相加
页:
[1]