| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖
标题:16进制转换
只看楼主 加入收藏
展望未来
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-9-11
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
16进制转换
void f16(int z)
{
    int i=0;
    char ch[256];
    m=z;
   
    do
    {
      n=m%16;
      m=m/16;
     switch(n)
    {
       case 0:ch[i]='0';break;
       case 1:ch[i]='1';break;
       case 2:ch[i]='2';break;
       case 3:ch[i]='3';break;
       case 4:ch[i]='4';break;
       case 5:ch[i]='5';break;
       case 6:ch[i]='6'; break;
       case 7:ch[i]='7';break;
       case 8:ch[i]='8';break;
       case 9:ch[i]='9';break;
       case 10:ch[i]='a';break;
       case 11:ch[i]='b';break;
       case 12:ch[i]='c';break;
       case 13:ch[i]='d';break;
       case 14:ch[i]='e';break;
       case 15:ch[i]='f';break;
      }
    i++;
    count++;
    }while(m!=0);
老师说中间的case部分可以用一条语句写出来,可我不会,哪位大侠能帮帮忙,鄙人感激不尽!!!!!!
2013-09-11 22:01
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:7 
看看ascii码表,看看这些字符的编码有什么关系,跟前面的case数字间是否存在固定的差?那么用一条语句就可以实现了

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-09-11 22:04
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
收藏
得分:10 
ascii码表中,1-9的ascii码依次加1,而a-f的ascii码分布在另一个区段 也依次加1,因为是两种规律,因此可以用一个if语句分两种情况讨论,n为1-9时用一条语句实现,n为10-15时用令一条语句实现,原来的switch{**}可以替换成:
if (n<10)
ch[i]='0'+n;
else
ch[i]='a'+n-10;

楼主对照ascii码表看看这些字符的二进制编码,就明白了
2013-09-11 22:37
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:3 
有计算器干嘛自己写
2013-09-12 08:45
快速回复:16进制转换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015547 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved