我现在太愚笨了,无法解决这个问题...
我得到一个BCD数字(每个数字都有自己的4位表示)
例如,我想要:
输入:202(十六进制)== 514(十进制) 输出:BCD 0x415 输入:0x202 位表示:001000000010 = 514
我尝试了什么:
我得到一个BCD数字(每个数字都有自己的4位表示)
例如,我想要:
输入:202(十六进制)== 514(十进制) 输出:BCD 0x415 输入:0x202 位表示:001000000010 = 514
我尝试了什么:
unsigned int uiValue = 0x202;
unsigned int uiResult = 0;
unsigned int uiMultiplier = 1;
unsigned int uiDigit = 0;
// get the dec bcd value
while ( uiValue > 0 )
{
uiDigit= uiValue & 0x0F;
uiValue >>= 4;
uiResult += uiMultiplier * uiDigit;
uiMultiplier *= 10;
}
但是我知道这是非常错误的,用比特表示法来表示应该是202,然后分成5个半字节,再重新表示为十进制数
我可以在纸上解决这个问题,但是我就是无法用简单的C代码实现它
uiValue = 202
,而不是0x202...
。如果是0x202,那么BCD值就是十进制的202... - Daniel Gehriger