2

BCD を 10 進数に変換できます。たとえば、10 進数の 17 ではなく 0x11 を 11 に変換できます。これは私が使用したコードです。

unsigned char hex = 0x11;
unsigned char backtohex ;

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

decここで、BCD 表現に変換したいと思います。11 を 0x0B ではなく 0x11 に変換したい。どうやって戻ろうか迷っています。

ありがとう!

4

1 に答える 1

4

入力が常に 0 から 99 の間であると仮定すると、次のようになります。

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

単純に上位の桁を 1 ニブル左にシフトし下位の桁を所定の位置に移動します。

于 2015-01-25T17:31:16.240 に答える