十进制,十六进制,BCD码相互转换C程序_第1页
十进制,十六进制,BCD码相互转换C程序_第2页
十进制,十六进制,BCD码相互转换C程序_第3页
十进制,十六进制,BCD码相互转换C程序_第4页
十进制,十六进制,BCD码相互转换C程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本人用过的十六进制、BCD码之间的转换C程序,还有十进制的,可以参考使用,#include #include / / /功能:十进制转十六进制 / /输入: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-) hexi = (dec%256)&0xFF; dec /= 256; return 0; / / /功能:二进制取反 / /输入: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; ilength; i+) dsti = srci0xFF; 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; ilength; i+) rslt += (unsigned long)(hexi)(8*(length-1-i); return rslt; / / /功能:求权 / /输入:int base 进制基数 / int times 权级数 / /输出: / /返回:unsigned long 当前数据位的权 / / unsigned long power(int base, int times) int i; unsigned long rslt = 1; for(i=0; itimes; 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; i4)&0x0F)*10 + (bcdi&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; Bcdi = (temp/10)4) + (temp%10) & 0x0F); Dec /= 100; return 0; int main() register int i; unsigned char tmp_bff12 = ; /十六进制转十进制 unsigned char HEX4 = 0x34, 0xFE, 0x3E, 0xFF; unsigned long dec_hex = 0; dec_hex = HextoDec(HEX, 4); printf(dec_hex = %dn, dec_hex); /十进制转十六进制 DectoHex(dec_hex, tmp_bff, 4); for(i=0; i5; i+) printf(tmp_bff%d = 0x%02Xn,i, tmp_bffi); /BCD码转十进制 unsigned long dec_bcd = 0; unsigned char BCD4 = 0x98, 0x23, 0x45, 0x78; dec_bcd = BCDtoDec(BCD, 4); printf(dec_bcd = %dn, dec_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论