大家都知道,在计算机中,常用的数据编码格式有二进制、八进制、十进制、十六进制等,这些编码格式可以相互转换。在电力通信协议中,很多数据都是以BCD格式编码的,这些数据需要转换成普通的十进制数字串。本文先简单介绍一下BCD码,然后用代码来演示它与十进制数字串的转换。BCD码简介BCD码(BinaryCodedDecimal)是一种二进制数字编码形式,即二进制编码的十进制码。这种编码形式使用四位来存储一个十进制数,使得二进制和十进制之间的转换可以快速进行。常见的BCD码有8421BCD码、2421BCD码和余数3码,其中8421BCD码最为常见。本文介绍8421BCD码与十进制数串的转换。十进制数与8421BCD码的对应关系如下表所示:从上表中我们还可以看出十进制数与8421BCD码的对应关系:一个双字节的十进制数串可以用一个字节表示8421BCD码。例如数字串“19”是两个字节,它对应的8421BCD码是“00011001”(只有一个字节),其中高四位“0001”代表十进制“1”,低四位“1001”代表十进制的“9”。十进制数串与8421BCD码的转换根据前面对BCD码的介绍,我们可以编写代码分别将BCD码转为十进制数串和十进制数串转为BCD码。具体代码已提交至GitHub,欢迎下载阅读:https://github.com/zhouzxi/BCD2String。其中,BCD2String函数用于将8421BCD码转换为十进制数字字符串,String2BCD函数用于将十进制数字字符串转换为8421BCD码。本程序运行在Linux系统上,可以使用“gcc-g-oBCD2StringBCD2String.c”命令编译代码,然后运行“./BCD2String”命令,结果如下:$./BCD2StringszDigitBuf=7539!szBCDData=19!szDigitBuf=19!大家可以根据运行结果阅读程序,看看8421BCD码与十进制数串的转换原理。【本文为专栏作家周兆雄原创文章,作者微信公众号:周氏逻辑(logiczhou)】点此阅读更多本作者好文
