首页天道酬勤c语言实现十进制转十六进制,十进制与bcd码之间的转换

c语言实现十进制转十六进制,十进制与bcd码之间的转换

张世龙 05-13 12:41 88次浏览

在设计嵌入式软件时,经常会遇到十六进制、BCD代码和十进制之间的转换。 最近创建M1卡的APP应用程序包含许多十六进制、BCD码和十进制之间的转换。 笔者通过了解BCD码、十六进制权利,轻松实现了他们之间的交换。

#包含

#包含

/

//

//功能:二进制相反

//

//输入:一致不一致的char * src二进制数据

//int length要转换的二进制数据的长度

//

//输出: unsigned char *dst反转的二进制数据

//

//返回:0 success

//

//

(不一致的char * dst,一致的char * src,不一致的char * src ) ) ) ) ) ) 652

{

int i;

for(I=0; I

{

dst[i]=src[i]^0xFF;

}

返回0;

}

//

//

//功能:从十六进制到十进制

//

//输入:要进行一致化char * hex转换的十六进制数据

//int length进制数据长度

//

//输出:

//

//返回: int rslt转换后的十进制数据

//

//思路:十六进制各位表示的十进制范围为0至255,256进制

//向左移动8位(8)等价乘以256

//

/

(unsignedlonghextodec (constunsignedchar * hex,int length () ) ) ) ) ) ) )。

{

int i;

unsigned long rslt=0;

for(I=0; I

{

(rlt=(无符号长) (hex[i] ) ) ) ) ) ) ) ) )。

}

返回rslt;

}

/

//

//功能:从十进制到十六进制

//

//输入: int dec转换的十进制数据

//int length转换后的十六进制数据长度

//

//输出: unsigned char *hex转换后的十六进制数据

//

//返回:0 success

//

//想法:原理从十六进制数转移到十进制数

//

intdectohex(intdec,unsigned char *hex,int length ) )。

{

int i;

for(I=length-1; i=0; I----)

{

hex[I]=(dec%6)0xFF;

dec /=256;

}

返回0;

}

/

//

//功能:要求权利

//

//输入: int base进制基数

//int times权利级数

//

//输出:

//

//后退:无符号长整型当前数据位的权限

//

//

统一长电源(int base,int times ) )。

{

int i;

无符号长rslt=1;

for(I=0; I

rslt *=base;

返回rslt;

}

/

//

//功能: BCD旋转10进制

//

//输入: const unsigned char *要转换的BCD代码

//int length BCD代码数据长度

//

//输出:

//

//后退:无符号长整型当前数据位的权限

//

//思路:压缩BCD码的一个字符表示的十进制数据范围为0~99,100进制

//首先求出各文字表示的十进制值,乘以权重

//

(未注册的bcdtodec (constunsignedchar * BCD,int length () ) ) ) ) ) ) 65

{

int i,tmp;

无符号长码=0;

for(I=0; I

{

tmp=(BCD[I]4)0x0F ) 10 ) BCD[I]0x0f );

DEC=tmp*power(100,length-1-i );

}

返回德克;

}

/

//

//功能:十进制转换BCD码

//

//输入: int Dec转换的十进制数据

//int length BCD代码数据长度

//

//输出:无符号char * BCD转换后的BCD代码

//

//返回:0 success

//

//思路:原理转向BCD码和十进制

//

//

intdectobcd(intdec,未指定的char * BCD,int length ) )。

{

int i;

int temp;

for(I=length-1; i=0; I----)

{

temp=Dec0;

BCD [ I ]=(时间/10 )4) ) ) temp )0x0F );

Dec /=100;

}

返回0;

}

int main () )

{

注册器int I;

unsigned char tmp_bff[12]=' ';

//从十六进制到十进制

unsignedcharhex [4]={0x 34,0x Fe,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; i5; I )

{

printf(tmp_bff(%d )=0xx(n ),I,tmp_bff ) I );

}

//将BCD代码设置为十进制

unsigned long dec_bcd=0;

unsignedcharbcd [4]={0x 98,0x 23,0x 45,0x 78 };

DEC_BCD=bcdtodec(BCD,4 );

printf(dec_bcd=%d\n ),dec_BCD );

//十进制转换BCD码

dectobcd(dec_BCD,tmp_bff,4 );

for(I=0; i5; I )

{

printf(tmp_bff(%d )=0xx(n ),I,tmp_bff ) I );

}

getchar (;

}

十进制转8421码,二进制转十进制8421法 123的压缩8421bcd码,php 压缩文件夹