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

[复制链接]
2730|7
 楼主| zcxajs 发表于 2013-2-20 11:36 | 显示全部楼层 |阅读模式
void TentoSixteen(unsigned int nx)
{
  u8 H_Bit,L_Bit;
  
  if(nx>=256)
    {
          H_Bit=nx/256;
          L_Bit=nx%256;   
          x16L = L_Bit;
          x16H = H_Bit;

     }else {
            x16L = nx;
            x16H = 0x00;
           }
}
 楼主| 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;
}

}

评论

错了错了,是16进制的!呵呵~~  发表于 2013-2-21 10:03
兄弟,你这个是转二进制的!  发表于 2013-2-21 09:58
dqyubsh 发表于 2013-2-21 00:28 | 显示全部楼层
呵呵,楼上英文翻的有意思,一般写成Dec2Hex
387889558 发表于 2013-2-21 10:50 | 显示全部楼层
同样学习了,不错不错
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楼的。
ZOUWEN1 发表于 2013-2-21 21:41 | 显示全部楼层
dqyubsh 发表于 2013-2-21 00:28
呵呵,楼上英文翻的有意思,一般写成Dec2Hex

有空可看下我的回贴
ZOUWEN1 发表于 2013-2-21 21:42 | 显示全部楼层
dqyubsh 发表于 2013-2-21 00:28
呵呵,楼上英文翻的有意思,一般写成Dec2Hex

有空再回来看下我的回贴
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

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