5325|10

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

10进制转16进制 出现奇怪的问题 [复制链接]

unsigned char decTohex(unsigned char n, unsigned char turnto)
{
  int   a[20]={0x0};   
    int   i;      
    unsigned char temp;
    for(i=0;n>0;i++)   
    {   
          a=n%turnto;   
          n=n/turnto;   
    }     
    for(--i;i>=0;i--)   
    {
      if(a>=10)
      {   
        switch(a)  
        {
        case     10:
          a=0x0a;
          break;   
        case     11:   a=0x0b;break;   
        case     12:   a=0x0c;break;   
        case     13:   a=0x0d;break;   
        case     14:   a=0x0e;break;   
        case     15:   a=0x0f;break;   
        }   
      }   
      else  
        temp=a;      
    }   
  return temp = ((a[1]<<4 )|(a[0]&0x0f));
  
}




int main(void)
{   
  unsigned char aa;
  unsigned V1,V2,V3,V4;
  V1=32;
  V2=31;
  V3=64;
  V4=63;
  aa=0;
  aa=decTohex(V1,16);
  aa=decTohex(V2,16);
  aa=decTohex(100,16);
  aa=decTohex(V3,16);
  aa=decTohex(V4,16);

这里都对的啊,在IAR下面, 转成 16的都对啊  . AA 的值得  分别是 0x20, 0x1f, 0x64,0x40,0x3f

咋到了 ADS1.2下就不行了呢??????  5个转化,就 直接 输入整数 100 两个开发环境下的转化结果都对了




最新回复

自己一下没绕过来.... 一下绕进去了 折腾了大半天,麻烦各位了.... 汗颜....   详情 回复 发表于 2008-12-26 14:32
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你的代码咋就这么晦涩呢?好累,不看了
我看串口调试助手的源码转换很精简啊。
也许你应该搬过那个来看看。
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
没看懂是啥问题?
在ADS下面都转成什么了?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
“咋到了 ADS1.2下就不行了呢??????  5个转化,就 直接 输入整数 100 两个开发环境下的转化结果都对了”

我怎么觉得我小学语文都没毕业,这些字个个都认识,可连起来就是看不懂啥意思呢……
看来真是落后了,还是老师说的对:“数学是一切科学的基础,而语文又是数学的基础”。唉。
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

5
 
“咋到了 ADS1.2下就不行了呢??????  5个转化,就 直接 输入整数 100 两个开发环境下的转化结果都对了”
aa=decTohex(V1,16);
  aa=decTohex(V2,16);
  aa=decTohex(100,16);
  aa=decTohex(V3,16);
  aa=decTohex(V4,16);


就是说: 上面调用的 5次 dectohex ()函数时, 在IAR开发环境下,无论第一个参数是变量还是常量,转换出来的值都是
16进制的, 如 100,  经过转换后, aa= 0x64;;  V1=32, 经过这个后,aa=decTohex(V1,16); aa的值为:0x20
其实  10进制的 100, 和 16进制的 0x64 是一样大小
而我想要的就是 16进制的显示形式


而 上面的 5次调用, 到了ADS开发环境下:
只有aa=decTohex(100,16);  这个转换出来的结果为: 0x64
其他的4个, 都是带入的多少,出来的结果还是多少
V1=32, 经过这个后,aa=decTohex(V1,16); aa的值为:32
不是我想要的,16进制显示形式: 0x20






 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

6
 
你这函数有什么用啊,转不转在内存中的表现形式都是一个样,跟显示就没有关系
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
我知道地层的其实都 2进制的

这个地方,我就是要形式上的 呵呵
其实 100 和 0x 64 是一样的, 但我必须要用 0x64

 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

8
 
你应该把100转成ASCII码‘6’,‘4’你那函数一点用都没有。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

9
 
楼主,不明白你为什么要这么转,你又不是打印,
在VC6.0用来显示才这么做。
---------------------------------------
你如果用来显示就一定要转换成ASCII码啊,这个东西很简单啊。你咋整的呢?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
好像sprintf很帅

呵呵
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
自己一下没绕过来.... 一下绕进去了
折腾了大半天,麻烦各位了....

汗颜....

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表