请教BCD码转为十进制的问题
8421组合BCD码,想转为十进制
dim a as byte =&h18 (十位为1 ,个位为8)
程序写法:
十位 个位
dim b as integer = ((a And &HF0) /16 )*10 + a And &HF
msgbox((((a And &HF0) /16 )*10).Tostring ) 得出结果为 1
msgbox((( a And &HF).Tostring ) 得出结果为8
msgbox(b.tostring) 得出结果为2
当我把代码改成
十位 个位
dim b as integer = CByte(((a And &HF0) /16 )*10) +CByte( a And &HF)
msgbox((((a And &HF0) /16 )*10).Tostring ) 得出结果为 1
msgbox((( a And &HF).Tostring ) 得出结果为8
msgbox(b.tostring) 得出结果为18
只要我的个位小于等于5, 我用
dim b as integer = ((a And &HF0) /16 )*10 + a And &HF
可以得到正确的十进制值,大于16后就会有问题,
请个位大大帮忙分析一下为什么会这样?