呵呵,对不起,没有注释,是难得看明白!不过还是要感谢楼上二位的回复。
有必要把程序解释一下,同时说明我的算法。其实,《程序1》我个人认为对有些同行也许有用,这已经通过调试了,贴出来一是共享,二是借此想通过讨论相互提高。
该程序是为了满足建设部“三表标准”中,对累计流量运算进行数据转换而设计的。“三表标准”中规定累计流量为4字节BCD码(另外加1字节单位代码0x2C,即立方米),传送方向是低位在前。假设当前流量为76543210立方米,该数据在内存中的BCD码以数组存放为:SL[4]={0x10,0x32,0x54,0x76}。
为了将数组SL转换为一个无符号长整数,拟调用unsigned long int LJSL(BYTE num1)完成。
函数LJSL的形参num1是欲转换的数组首字节指针(为便于调试跟踪,设置为char类型。实际使用时应该为指针型参数)。
由于紧缩型BCD码是以半字节表示一位十进制数,十进制的“35”以BCD码表示为0x35。故而我设计了一个将一字节BCD数据(表示两位十进制数)转换为二进制数据的函数“unsigned int BCD_to_BIN(BYTE k)”。其转换算法为: