2

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

unsigned char hex = 0x11;
unsigned char backtohex ;

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

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

谢谢!

4

1 回答 1

4

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

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

只需将高位数字向左移动一个半字节,或者将低位数字原位。

于 2015-01-25T17:31:16.240 回答