先看什么是BCD码:
BCD码(Binary-Coded Decimal)
亦称二进码十进数或二-十进制代码。
用4位二进制数来表示1位十进制数中的0~9这10个数码。
是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。
通俗点,BCD码就是对于8位数字来说,高4为和低4为均不超过9的数字。
对新手来说,BCD码很容易和16进制数混淆。
举几个例子:
12
作为10进制很好理解,表示12;作为16进制表示0x12,等于十进制的18;但它同时又可作为BCD码传输,代表1和2,一般作为地址等特定数据传输。
而
0xAB
则不是bcd码,因为高四位A和第四位B均超过了9,属于16进制数。
如何判断一个数字是否是BCD码呢
其实我们根据BCD码的定义来看就知道,只需要写一个循环,逐个数字进行判断,逻辑也很简单。如下:
U8 JudgeBCD(U8 *sPtr, U8 Len)
{
U8 Temp;
while (Len--)
{
Temp = *sPtr++;
if (((Temp >> 4 ) >= 10) || ((Temp & 0x0F) >= 10))
{
return false;
}
}
return true;
}