BCD与HEX之间相互转换
扫描二维码
随时随地手机看文章
最近在做一个项目,用到这个东东,可是网上找到的一些相关函数还是有点错误,干脆自己写了一个,大家看能用就用吧。
//Val_BCD的范围(<0x99,>0)
INT8U BCD2HEX(INT8U Val_BCD)
{
INT8U temp;
temp = Val_BCD&0x0F; //按位与,temp得到低四位数。
Val_BCD >>= 4;//右移四位,将高四位移到低四位的位置,得到高四位码值。
Val_BCD &= 0x0F; //防止移位时高位补进1,只保留高四位码值
Val_BCD *= 10; //高位码值乘以10
temp += Val_BCD; //然后与第四位码值相加。
return temp; //将得到的十进制数返回
}
//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;
}