BCD與HEX之間相互轉(zhuǎn)換
最近在做一個項目,用到這個東東,可是網(wǎng)上找到的一些相關(guān)函數(shù)還是有點錯誤,干脆自己寫了一個,大家看能用就用吧。
//Val_BCD的范圍(<0x99,>0)
INT8U BCD2HEX(INT8U Val_BCD)
{
INT8U temp;
temp = Val_BCD&0x0F; //按位與,temp得到低四位數(shù)。
Val_BCD >>= 4;//右移四位,將高四位移到低四位的位置,得到高四位碼值。
Val_BCD &= 0x0F; //防止移位時高位補進1,只保留高四位碼值
Val_BCD *= 10; //高位碼值乘以10
temp += Val_BCD; //然后與第四位碼值相加。
return temp; //將得到的十進制數(shù)返回
}
//Val_HEX的范圍(<0xFF,>0)
INT16U HEX2BCD(INT8U Val_HEX)
{
INT16U Val_BCD;
INT8U temp;
temp = Val_HEX%100;
Val_BCD = ((INT16U)Val_HEX)/100<<8;
Val_BCD = Val_BCD|temp/10<<4;
Val_BCD = Val_BCD|temp%10;
return Val_BCD;
}