BCD.45十六进制转十进制转换十六进制?求详细解答!

十六进制转换为十进制!BCD.45?过程!_百度知道
十六进制转换为十进制!BCD.45?过程!
提问者采纳
整数部分11*16^2 + 12*16^1 + 13*16^0 = 3021小数部分4*(16^-1)+ 5*(16^-2)= 0.所以最后结果为5
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
来自团队:
其他类似问题
为您推荐:
十六进制转换的相关知识
其他1条回答
下载知道APP
随时随地咨询
出门在外也不愁6540人阅读
#include &stdio.h&
#include &string.h&
/////////////////////////////////////////////////////
//功能:二进制取反
//输入:const unsigned char *src&& 二进制数据
//&&&&&& int length&&&&&&&&&&&&&&&& 待转换的二进制数据长度
//输出:unsigned char *dst&&&&&&&& 取反后的二进制数据
//返回:0&&&& success
//////////////////////////////////////////////////////
int convert(unsigned char *dst, const unsigned char *src, int length)
&&&&&&& for(i=0; i& i++)
&&&&&&&& {
&&&&&&&&&&&&&&&& dst[i] = src[i]^0xFF;
&&&&&&&& }
&&&&&&& return 0;
//////////////////////////////////////////////////////////
//功能:十六进制转为十进制
//输入:const unsigned char *hex&&&&&&&&& 待转换的十六进制数据
//&&&&&& int length&&&&&&&&&&&&&&&&&&&&&&& 十六进制数据长度
//返回:int&& rslt&&&&&&&&&&&&&&&&&&&&&&&& 转换后的十进制数据
//思路:十六进制每个字符位所表示的十进制数的范围是0 ~255,进制为256
//&&&&&& 左移8位(&&8)等价乘以256
/////////////////////////////////////////////////////////
unsigned long HextoDec(const unsigned char *hex, int length)
&&&& unsigned long rslt = 0;
&&& for(i=0; i& i++)
&&&&&&&& rslt += (unsigned int)(hex[i])&&(8*(length-1-i));
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &
/////////////////////////////////////////////////////////
//功能:十进制转十六进制
//输入:int dec&&&&&&&&&&&&&&&&&&&&& 待转换的十进制数据
//&&&&&& int length&&&&&&&&&&&&&&&&&& 转换后的十六进制数据长度
//输出:unsigned char *hex&&&&&&&&&& 转换后的十六进制数据
//返回:0&&&& success
//思路:原理同十六进制转十进制
//////////////////////////////////////////////////////////
int DectoHex(int dec, unsigned char *hex, int length)
&&& for(i=length-1; i&=0; i--)
&&&&&&&& hex[i] = (dec%256)&0xFF;
&&&&&&&& dec /= 256;
&&& return 0;
/////////////////////////////////////////////////////////
//功能:求权
//输入:int base&&&&&&&&&&&&&&&&&&&& 进制基数
//&&&&&& int times&&&&&&&&&&&&&&&&&&& 权级数
//返回:unsigned long&&&&&&&&&&&&&&& 当前数据位的权
//////////////////////////////////////////////////////////
unsigned long power(int base, int times)
&&&& unsigned long rslt = 1;
&&& for(i=0; i& i++)
&&&&&&&& rslt *=
/////////////////////////////////////////////////////////
//功能:BCD转10进制
//输入:const unsigned char *bcd&&&&& 待转换的BCD码
//&&&&&& int length&&&&&&&&&&&&&&&&&&& BCD码数据长度
//返回:unsigned long&&&&&&&&&&&&&&& 当前数据位的权
//思路:压缩BCD码一个字符所表示的十进制数据范围为0 ~ 99,进制为100
//&&&&&& 先求每个字符所表示的十进制值,然后乘以权
//////////////////////////////////////////////////////////
unsigned long&& BCDtoDec(const unsigned char *bcd, int length)
&&&& int i,
&&&&& unsigned long dec = 0;
&&&& for(i=0; i& i++)
&&&&&&&& tmp = ((bcd[i]&&4)&0x0F)*10 + (bcd[i]&0x0F);& &
&&&&&&&& dec += tmp * power(100, length-1-i);&&&&&&&& &
/////////////////////////////////////////////////////////
//功能:十进制转BCD码
//输入:int Dec&&&&&&&&&&&&&&&&&&&&&& 待转换的十进制数据
//&&&&&& int length&&&&&&&&&&&&&&&&&&& BCD码数据长度
//输出:unsigned char *Bcd&&&&&&&&&&& 转换后的BCD码
//返回:0&& success
//思路:原理同BCD码转十进制
//////////////////////////////////////////////////////////
int DectoBCD(int Dec, unsigned char *Bcd, int length)
&&&& for(i=length-1; i&=0; i--)
&&&&&&&&& temp = Dec%100;
&&&&&&&&& Bcd[i] = ((temp/10)&&4) + ((temp%10) & 0x0F);
&&&&&&&&& Dec /= 100;
&&&& return 0;
int main()
&&&& unsigned char tmp_bff[12] = &&;
&&& //十六进制转十进制
&&&& unsigned char HEX[4] = {0x34, 0xFE, 0x3E, 0xFF};
&&&& unsigned long dec_hex = 0;
&&&& dec_hex = HextoDec(HEX, 4);
&&&& printf(&dec_hex = %d\n&, dec_hex);
&&& //十进制转十六进制
&&&& DectoHex(dec_hex, tmp_bff, 4);
&&& for(i=0; i&5; i++)
&&&&&&&& printf(&tmp_bff[%d] = 0x%02X\n&,i, tmp_bff[i]);
&&& //BCD码转十进制
&&&& unsigned long dec_bcd = 0;
&&&& unsigned char BCD[4] = {0x98, 0x23, 0x45, 0x78};
&&&& dec_bcd = BCDtoDec(BCD, 4);
&&&& printf(&dec_bcd = %d\n&, dec_bcd);
&&& //十进制转BCD码
&&&& DectoBCD(dec_bcd, tmp_bff, 4);
&&& for(i=0; i&5; i++)
&&&&&&&& printf(&tmp_bff[%d] = 0x%02X\n&, i, tmp_bff[i]);
&&&& getchar();
16进制、10进制、BCD码之间的转换
#include &stdio.h&
#include &string.h&
/////////////////////////////////////////////////////
//功能:二进制取反
//输入:const unsigned char *src&& 二进制数据
//&&&&&& int length&&&&&&&&&&&&&&&& 待转换的二进制数据长度
//输出:unsigned char *dst&&&&&&&& 取反后的二进制数据
//返回:0&&&& success
//////////////////////////////////////////////////////
int convert(unsigned char *dst, const unsigned char *src, int length)
&&&&&&& for(i=0; i& i++)
&&&&&&&& {
&&&&&&&&&&&&&&&& dst[i] = src[i]^0xFF;
&&&&&&&& }
&&&&&&& return 0;
//////////////////////////////////////////////////////////
//功能:十六进制转为十进制
//输入:const unsigned char *hex&&&&&&&&& 待转换的十六进制数据
//&&&&&& int length&&&&&&&&&&&&&&&&&&&&&&& 十六进制数据长度
//返回:int&& rslt&&&&&&&&&&&&&&&&&&&&&&&& 转换后的十进制数据
//思路:十六进制每个字符位所表示的十进制数的范围是0 ~255,进制为256
//&&&&&& 左移8位(&&8)等价乘以256
/////////////////////////////////////////////////////////
unsigned long HextoDec(const unsigned char *hex, int length)
&&&& unsigned long rslt = 0;
&&& for(i=0; i& i++)
&&&&&&&& rslt += (unsigned int)(hex[i])&&(8*(length-1-i));
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &
/////////////////////////////////////////////////////////
//功能:十进制转十六进制
//输入:int dec&&&&&&&&&&&&&&&&&&&&& 待转换的十进制数据
//&&&&&& int length&&&&&&&&&&&&&&&&&& 转换后的十六进制数据长度
//输出:unsigned char *hex&&&&&&&&&& 转换后的十六进制数据
//返回:0&&&& success
//思路:原理同十六进制转十进制
//////////////////////////////////////////////////////////
int DectoHex(int dec, unsigned char *hex, int length)
&&& for(i=length-1; i&=0; i--)
&&&&&&&& hex[i] = (dec%256)&0xFF;
&&&&&&&& dec /= 256;
&&& return 0;
/////////////////////////////////////////////////////////
//功能:求权
//输入:int base&&&&&&&&&&&&&&&&&&&& 进制基数
//&&&&&& int times&&&&&&&&&&&&&&&&&&& 权级数
//返回:unsigned long&&&&&&&&&&&&&&& 当前数据位的权
//////////////////////////////////////////////////////////
unsigned long power(int base, int times)
&&&& unsigned long rslt = 1;
&&& for(i=0; i& i++)
&&&&&&&& rslt *=
/////////////////////////////////////////////////////////
//功能:BCD转10进制
//输入:const unsigned char *bcd&&&&& 待转换的BCD码
//&&&&&& int length&&&&&&&&&&&&&&&&&&& BCD码数据长度
//返回:unsigned long&&&&&&&&&&&&&&& 当前数据位的权
//思路:压缩BCD码一个字符所表示的十进制数据范围为0 ~ 99,进制为100
//&&&&&& 先求每个字符所表示的十进制值,然后乘以权
//////////////////////////////////////////////////////////
unsigned long&& BCDtoDec(const unsigned char *bcd, int length)
&&&& int i,
&&&&& unsigned long dec = 0;
&&&& for(i=0; i& i++)
&&&&&&&& tmp = ((bcd[i]&&4)&0x0F)*10 + (bcd[i]&0x0F);& &
&&&&&&&& dec += tmp * power(100, length-1-i);&&&&&&&& &
/////////////////////////////////////////////////////////
//功能:十进制转BCD码
//输入:int Dec&&&&&&&&&&&&&&&&&&&&&& 待转换的十进制数据
//&&&&&& int length&&&&&&&&&&&&&&&&&&& BCD码数据长度
//输出:unsigned char *Bcd&&&&&&&&&&& 转换后的BCD码
//返回:0&& success
//思路:原理同BCD码转十进制
//////////////////////////////////////////////////////////
int DectoBCD(int Dec, unsigned char *Bcd, int length)
&&&& for(i=length-1; i&=0; i--)
&&&&&&&&& temp = Dec%100;
&&&&&&&&& Bcd[i] = ((temp/10)&&4) + ((temp%10) & 0x0F);
&&&&&&&&& Dec /= 100;
&&&& return 0;
int main()
&&&& unsigned char tmp_bff[12] = &&;
&&& //十六进制转十进制
&&&& unsigned char HEX[4] = {0x34, 0xFE, 0x3E, 0xFF};
&&&& unsigned long dec_hex = 0;
&&&& dec_hex = HextoDec(HEX, 4);
&&&& printf(&dec_hex = %d\n&, dec_hex);
&&& //十进制转十六进制
&&&& DectoHex(dec_hex, tmp_bff, 4);
&&& for(i=0; i&5; i++)
&&&&&&&& printf(&tmp_bff[%d] = 0x%02X\n&,i, tmp_bff[i]);
&&& //BCD码转十进制
&&&& unsigned long dec_bcd = 0;
&&&& unsigned char BCD[4] = {0x98, 0x23, 0x45, 0x78};
&&&& dec_bcd = BCDtoDec(BCD, 4);
&&&& printf(&dec_bcd = %d\n&, dec_bcd);
&&& //十进制转BCD码
&&&& DectoBCD(dec_bcd, tmp_bff, 4);
&&& for(i=0; i&5; i++)
&&&&&&&& printf(&tmp_bff[%d] = 0x%02X\n&, i, tmp_bff[i]);
&&&& getchar();
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:392426次
积分:3776
积分:3776
排名:第4322名
原创:28篇
转载:107篇
评论:35条微机原理答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
微机原理答案
上传于||暂无简介
大小:53.33KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢BCD码、十六进制与十进制互转_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
BCD码、十六进制与十进制互转
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
你可能喜欢

我要回帖

更多关于 c 十进制转十六进制 的文章

 

随机推荐