打印

十进制转换十六进制的程序求解

[复制链接]
2322|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zcxajs|  楼主 | 2013-2-20 11:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zcxajs|  楼主 | 2013-2-20 11:36 | 只看该作者
是怎么实现的 谁能举个例子说明下 谢谢

使用特权

评论回复
板凳
ZOUWEN1| | 2013-2-20 12:56 | 只看该作者
本帖最后由 ZOUWEN1 于 2013-2-20 12:59 编辑

/* 假定unsigned int 是16bit, hex[4]是存贮转换的结果*/
void TentoSixteen(unsigned int nx, u8 hex[4])
{
  
  u8 i=0;
  for (i=0;i<4;i++)
{
        *(hex+i) = u8(nx&0x0F);   /*从低到高存贮16#的数据*/
        nx>>=4;
}

}

使用特权

评论回复
评论
chjmacong 2013-2-21 10:03 回复TA
错了错了,是16进制的!呵呵~~ 
chjmacong 2013-2-21 09:58 回复TA
兄弟,你这个是转二进制的! 
地板
dqyubsh| | 2013-2-21 00:28 | 只看该作者
呵呵,楼上英文翻的有意思,一般写成Dec2Hex

使用特权

评论回复
5
387889558| | 2013-2-21 10:50 | 只看该作者
同样学习了,不错不错

使用特权

评论回复
6
ZOUWEN1| | 2013-2-21 21:35 | 只看该作者
本帖最后由 ZOUWEN1 于 2013-2-21 21:39 编辑


测试源代码:

#include "stdafx.h"

/* 假定unsigned int 是16bit, hex[4]是存贮转换的结果*/
void TentoSixteen(unsigned int nx, unsigned char  hex[4])
{
  
  unsigned char  i=0;
  for (i=0;i<4;i++)
{
        *(hex+i) = unsigned char (nx&0x0F);   /*从低到高存贮16#的数据*/
        nx>>=4;
}

}

int main(int argc, char* argv[])
{
        unsigned int xx = 1345;
        unsigned char result[4],i;

    TentoSixteen(xx,result);
        for (i=0;i<4;i++)
        printf("result[%d]=%d\n",i,result);
        return 0;
}
在VC上运行测试的结果:
result[0]=1
result[1]=4
result[2]=5
result[3]=0
Press any key to continue  通过WINDOWS带的计算器,1345 = 0x541;
英文名字是借用1楼的。

使用特权

评论回复
7
ZOUWEN1| | 2013-2-21 21:41 | 只看该作者
dqyubsh 发表于 2013-2-21 00:28
呵呵,楼上英文翻的有意思,一般写成Dec2Hex

有空可看下我的回贴

使用特权

评论回复
8
ZOUWEN1| | 2013-2-21 21:42 | 只看该作者
dqyubsh 发表于 2013-2-21 00:28
呵呵,楼上英文翻的有意思,一般写成Dec2Hex

有空再回来看下我的回贴

使用特权

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

本版积分规则

1

主题

8

帖子

0

粉丝