如何将十进制转换回BCD?

How to convert decimal back BCD?

我可以将 BCD 码转换为十进制,例如我可以将 0x11 转换为十进制的 11 而不是 17。这是我使用的代码。

unsigned char hex = 0x11;
unsigned char backtohex ;

int dec = ((hex & 0xF0) >> 4) * 10 + (hex & 0x0F);

现在我想将 dec 转换回 BCD 表示法。我希望将 11 转换回 0x11 而不是 0x0B。我有点困惑如何回去。

谢谢!

假设您的输入始终介于 0 和 99 之间,包括:

unsigned char hex = ((dec / 10) << 4) | (dec % 10);

只需将高位数字左移一个半字节,低位数字就位。