BCD计算器问题

BCD Calculator issue

本文关键字:问题 计算器 BCD      更新时间:2023-10-16

我正在将十六进制0xE0转换为BCD。当我这样做的时候,我得到的是64分。我知道这是完全错误的,也许是我的c++代码中的问题,但64听起来不正确。什么好主意吗?0xE0是特例吗?(0xE0为十进制的224)

下面是我的部分代码:

unsigned char Hex2BCD(unsigned char param)
{   unsigned char lo;
    unsigned char hi;
    unsigned char val;
    unsigned char buf[10];
hi = param/ 10;
lo = param- (hi * 10);
val= (hi << 4) + lo;
return val;
}

我的想法是,你的代码转换为BCD是错误的。它没有做它应该做的事情,因此你正在观察错误的结果。

除了这个笑话:0xe0如果存储在signed char中是一个负数。如果你在计算结果时没有特别注意你使用的临时变量的符号,这可能会给你带来麻烦。

edit:现在您发布了一些代码,很明显,虽然您为lo的第一个数字计算正确的值,但您需要另一个步骤才能将正确的值输入hi

使用0xe0作为输入,您实际计算的是(22<<4) + 4 = 356 = 0x164而不是(2<<8)+(2<<4)+4 = 548 = 0x224