谢谢,请指教

[复制链接]
1039|9
 楼主| 15369902446 发表于 2016-7-19 15:54 | 显示全部楼层 |阅读模式
for (i =0;i<4;i++)
        {
                if (TmpArray[i] >= 'A')
                 TmpArray[i]=(uint8)(TmpArray[i]-55);
                else TmpArray[i]=TmpArray[i]-48;
        }
       
        H8=TmpArray[0]*16+TmpArray[1];
        L8=TmpArray[2]*16+TmpArray[3];
        result=H8*256+L8;
       
        return result;
dirtwillfly 发表于 2016-7-19 16:10 | 显示全部楼层
楼主有啥问题?
 楼主| 15369902446 发表于 2016-7-19 16:11 | 显示全部楼层
我想知道这个程序是在干什么?
JerryWu75 发表于 2016-7-19 17:42 | 显示全部楼层
16进制的BCD转int
 楼主| 15369902446 发表于 2016-7-23 10:10 | 显示全部楼层
能否详细说明一下,谢谢!
 楼主| 15369902446 发表于 2016-7-23 10:32 | 显示全部楼层

不知道这个程序是具体怎么个意思?
 楼主| 15369902446 发表于 2016-7-23 10:33 | 显示全部楼层

能否详细说明一下?谢谢
joyme 发表于 2016-7-23 15:45 | 显示全部楼层
程序是16进制数转换,不过不够严谨

unsigned int result;
result = 0;
for (i =0;i<4;i++)
{
           if ((TmpArray[i] >= 'A') && (TmpArray[i] <= 'F'))
                TmpArray[i]=(uint8)(TmpArray[i]-'A');
           else if ((TmpArray[i] >= 'a') && (TmpArray[i] <= 'f'))

TmpArray[i]=TmpArray[i]-48;
}
joyme 发表于 2016-7-23 15:48 | 显示全部楼层
unsigned int result;
result = 0;
for (i =0;i<4;i++)
{
           if ((TmpArray[i] >= 'A') && (TmpArray[i] <= 'F'))
                TmpArray[i]=(uint8)(TmpArray[i]-'A');
           else if ((TmpArray[i] >= 'a') && (TmpArray[i] <= 'f'))
               TmpArray[i]=(uint8)(TmpArray[i]-'a');
           else if ((TmpArray[i] >= '0') && (TmpArray[i] <= '9'))
               TmpArray[i]=(uint8)(TmpArray[i]-'0');
           else                       //错误输入
                return 0;                  
           result += tmpArray[i];
           result <<= 4;
}
return result;
这样更好理解,实用性会好一些
JerryWu75 发表于 2016-7-25 17:11 | 显示全部楼层
例如TmpArray[0]='A',TmpArray[1]='2',
转换后result=0xa2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

13

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部