十进制十六进制BCD码相互转换C程序培训资料.docx

上传人:b****6 文档编号:7867462 上传时间:2023-01-26 格式:DOCX 页数:6 大小:15.39KB
下载 相关 举报
十进制十六进制BCD码相互转换C程序培训资料.docx_第1页
第1页 / 共6页
十进制十六进制BCD码相互转换C程序培训资料.docx_第2页
第2页 / 共6页
十进制十六进制BCD码相互转换C程序培训资料.docx_第3页
第3页 / 共6页
十进制十六进制BCD码相互转换C程序培训资料.docx_第4页
第4页 / 共6页
十进制十六进制BCD码相互转换C程序培训资料.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

十进制十六进制BCD码相互转换C程序培训资料.docx

《十进制十六进制BCD码相互转换C程序培训资料.docx》由会员分享,可在线阅读,更多相关《十进制十六进制BCD码相互转换C程序培训资料.docx(6页珍藏版)》请在冰豆网上搜索。

十进制十六进制BCD码相互转换C程序培训资料.docx

十进制十六进制BCD码相互转换C程序培训资料

 

十进制,十六进制,BCD码相互转换C程序

本人用过的十六进制、BCD码之间的转换C程序,还有十进制的,可以参考使用,

#include

#include

/////////////////////////////////////////////////////////

//

//功能:

十进制转十六进制

//

//输入:

intdec                    待转换的十进制数据

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

//

//输出:

unsignedchar*hex         转换后的十六进制数据

//

//返回:

0   success

//

//思路:

原理同十六进制转十进制

//////////////////////////////////////////////////////////

intDectoHex(intdec,unsignedchar*hex,intlength)

{

   inti;

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

   {

       hex[i]=(dec%256)&0xFF;

       dec/=256;

   }

   return0;

}

/////////////////////////////////////////////////////

//

//功能:

二进制取反

//

//输入:

constunsignedchar*src 二进制数据

//     intlength               待转换的二进制数据长度

//

//输出:

unsignedchar*dst       取反后的二进制数据

//

//返回:

0   success

//

//////////////////////////////////////////////////////

intconvert(unsignedchar*dst,constunsignedchar*src,intlength)

{

       inti;

       for(i=0;i

       {

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

       }

       return0;

}

//////////////////////////////////////////////////////////

//

//功能:

十六进制转为十进制

//

//输入:

constunsignedchar*hex        待转换的十六进制数据

//     intlength                      十六进制数据长度

//

//输出:

//

//返回:

int rslt                       转换后的十进制数据

//

//思路:

十六进制每个字符位所表示的十进制数的范围是0~255,进制为256

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

//

/////////////////////////////////////////////////////////

unsignedlongHextoDec(constunsignedchar*hex,intlength)

{

   inti;

   unsignedlongrslt=0;

   for(i=0;i

   {

       rslt+=(unsignedlong)(hex[i])<<(8*(length-1-i));

                                                        

   }

   returnrslt;

}

/////////////////////////////////////////////////////////

//

//功能:

求权

//

//输入:

intbase                   进制基数

//     inttimes                  权级数

//

//输出:

//

//返回:

unsignedlong              当前数据位的权

//

//////////////////////////////////////////////////////////

unsignedlongpower(intbase,inttimes)

{

   inti;

   unsignedlongrslt=1;

   for(i=0;i

       rslt*=base;

   returnrslt;

}

/////////////////////////////////////////////////////////

//

//功能:

BCD转10进制

//

//输入:

constunsignedchar*bcd    待转换的BCD码

//     intlength                  BCD码数据长度

//

//输出:

//

//返回:

unsignedlong              当前数据位的权

//

//思路:

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

//     先求每个字符所表示的十进制值,然后乘以权

//////////////////////////////////////////////////////////

unsignedlong BCDtoDec(constunsignedchar*bcd,intlength)

{

    inti,tmp;

    unsignedlongdec=0;

    for(i=0;i

    {

       tmp=((bcd[i]>>4)&0x0F)*10+(bcd[i]&0x0F);   

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

    }

    returndec;

}

/////////////////////////////////////////////////////////

//

//功能:

十进制转BCD码

//

//输入:

intDec                     待转换的十进制数据

//     intlength                  BCD码数据长度

//

//输出:

unsignedchar*Bcd          转换后的BCD码

//

//返回:

0 success

//

//思路:

原理同BCD码转十进制

//

//////////////////////////////////////////////////////////

intDectoBCD(intDec,unsignedchar*Bcd,intlength)

{

    inti;

    inttemp;

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

    {

        temp=Dec%100;

        Bcd[i]=((temp/10)<<4)+((temp%10)&0x0F);

        Dec/=100;

    }

    return0;

}

intmain()

{

   registerinti;

   unsignedchartmp_bff[12]="";

   //十六进制转十进制

   unsignedcharHEX[4]={0x34,0xFE,0x3E,0xFF};

   unsignedlongdec_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码转十进制

   unsignedlongdec_bcd=0;

   unsignedcharBCD[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();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1