BCD碼與16進制互轉程序

#include <stdio.h>
// HEX轉BCD
//bcd_data(<0x255,>0)
unsigned char BCD2HEX(unsigned int bcd_data)
{
    unsigned char temp;
    temp=((bcd_data>>8)*100)|((bcd_data>>4)*10)|(bcd_data&0x0f);
    return temp;
}
// HEX轉BCD
//hex_data(<0xff,>0)
unsigned int HEX2BCD(unsigned char hex_data)
{
    unsigned int bcd_data;
    unsigned char temp;
    temp=hex_data%100;
    bcd_data=((unsigned int)hex_data)/100<<8;
    bcd_data=bcd_data|temp/10<<4;
    bcd_data=bcd_data|temp%10;
    return bcd_data;
}
int main(void)
{
    unsigned int temp,temp1;
    temp = BCD2HEX(11);
    temp1 = HEX2BCD(0xb);
    printf("temp:0x%x\n",temp); //BCD碼就是十進制數的二進制數
    printf("temp1:0x%x\n",temp1);
    return 0 ;
}

運行結果:
temp:0xb

temp1:0x11

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章