求助大神 帮我解释一下 这是一个将16进制转成10进制的程序-Arduino中文社区 - Powered by Discuz! Archiver

18753231545 发表于 2017-6-7 21:41

求助大神 帮我解释一下 这是一个将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;
}

Zoologist 发表于 2017-6-7 23:11

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

18753231545 发表于 2017-6-8 10:15

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;
这三句不太明白

czyang2008 发表于 2017-7-27 17:08

这个dwValue <<= 4意思是每次把一个数进行移位然后合成对应大小的十进制数,有点类似权值相加
页: [1]
查看完整版本: 求助大神 帮我解释一下 这是一个将16进制转成10进制的程序