16进制 10进制 BCD码之间的转换
来源:互联网 发布:独立域名 二级域名 编辑:程序博客网 时间:2024/05/18 19:43
http://blog.csdn.net/freedom2028/article/details/7318309
#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){ int i; for(i=0; i<length; 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){ int i; unsigned long rslt = 0; for(i=0; i<length; i++) { rslt += (unsigned int)(hex[i])<<(8*(length-1-i)); } return rslt;}/////////////////////////////////////////////////////////////功能:十进制转十六进制////输入:int dec 待转换的十进制数据// int length 转换后的十六进制数据长度////输出:unsigned char *hex 转换后的十六进制数据////返回:0 success////思路:原理同十六进制转十进制//////////////////////////////////////////////////////////int DectoHex(int dec, unsigned char *hex, int length){ int i; 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){ int i; unsigned long rslt = 1; for(i=0; i<times; i++) rslt *= base; return 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, tmp; unsigned long dec = 0; for(i=0; i<length; i++) { tmp = ((bcd[i]>>4)&0x0F)*10 + (bcd[i]&0x0F); dec += tmp * power(100, length-1-i); } return dec;}/////////////////////////////////////////////////////////////功能:十进制转BCD码////输入:int Dec 待转换的十进制数据// int length BCD码数据长度////输出:unsigned char *Bcd 转换后的BCD码////返回:0 success////思路:原理同BCD码转十进制////////////////////////////////////////////////////////////int DectoBCD(int Dec, unsigned char *Bcd, int length){ int i; int temp; for(i=length-1; i>=0; i--) { temp = Dec%100; Bcd[i] = ((temp/10)<<4) + ((temp%10) & 0x0F); Dec /= 100; } return 0;}int main(){ register int i; 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码之间的转换
- 16进制 10进制 BCD码之间的转换
- 16进制、10进制、BCD码之间的转换
- 16进制 10进制 BCD码之间的转换
- 【积累】 int 10进制 byte 16进制,BCD码 String之间的转换
- BCD码与十进制之间的转换
- BCD码与DEC码之间的转换
- gray码与自然BCD码之间的转换
- 十六进制、BCD码与十进制之间的转换
- 实现十进制与压缩bcd码之间的转换
- BCD码简介及其与十进制数字字符串之间的转换
- BCD码简介及其与十进制数字字符串之间的转换
- HEX/BCD/BYTE/之间的转换
- c语言 ascii 和 压缩bcd 码之间的相互转换
- 什么是BCD码?BCD码的用处。怎么把BCD码转换成二进制值?
- Java功能包-2进制,16进制,BCD,ascii转换
- Java功能包-2进制,16进制,BCD,ascii转换
- 作业-8421BCD码的转换
- 河床
- wubi 离线安装
- 【.NET中AOP的实现方案】静态代理
- 常用网址
- Oracle虚拟列
- 16进制 10进制 BCD码之间的转换
- 一份C++面试题和答案
- Java中正则表达式的使用
- ARM926EJ-S/ARM920T 协处理器 CP14, CP15 详解
- android启动过程详细讲解
- Android之多媒体--使用MediaPlayer播放音频
- MBProgressHUD 非模态
- 冒泡排序算法
- 完整的计数排序