打印
[其他产品]

我这个“十六进制转十进制函数”错在哪里?

[复制链接]
932|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2021-10-26 10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在程序中AD采样得到一个十六进制数:

#define uint16  unsigned int
uint16  AD_Result=0;

AD_Result=ADRESL&0x00FF;   
AD_Result|=ADRESH<<8;

我想把AD_Result这个十六进制数转化为十进制数,为后面处理方便。
我在线调试得出AD_Result值形式如:0x12AB
我编写了这个转化函数:
int HEX2OTC(char *src)
{
   int i,t;
   int sum=0;
   char s[4]=0;
   s[0]=((src>>12)&0x000f);
   s[1]=(((src>>8)&0x000f);
   s[2]=((src>>4)&0x000f);
   s[3]=((src>>0)&0x000f);
   for(i=0;i<4;i++)
    {
       if(s[i]<='9')
          t=s[i]-'0';
    else
          t=s[i]-'A'+10;
    sum=sum*16+t;
   return sum;
}
但是实际调试中发现我打算定义S[]为字符型数组,但是在线查看也是一个十六进制数,如0x01 0x02 0x0A 0x0B
怎么改进下?

有没有简单一点的转化?看网上有使用 sprintf函数,照着做也没有成功,请高手指点一下!谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1414

主题

3849

帖子

6

粉丝