0

ソースからバイナリ ファイルがあり、そこからデータを取得して、人間が読める形式で読み取る必要があります。データを取得し、4 ビットの 16 進数にしました。たとえば、ファイル サイズが 256 バイトで、16 進数で取得し、512 個の 4 ビット 16 進数値を取得しています。さて、人間が読める ASCII 文字にするために、2 つの 4 ビット 16 進数を追加して 1 バイトを作成する必要があります。Hex形式でデータを取得する方法は

byte = read_buffer[i];

// Convert the Most Significant nibble for first byte
write_buffer_hex[(i + 1) * 2 + 0] = hex_chars[(byte >> 4)];

// Convert the Least Significant nibble for the first byte
write_buffer_hex[(i + 1) * 2 + 1] = hex_chars[byte & 0x0f];

さて、私の質問は、これら 2 つの 16 進値を追加して ASCII 値を持たせるにはどうすればよいかということです。私が今やっている方法は、これら2つを追加するだけですが、それは正しい方法ですか??. ありがとうございました

4

2 に答える 2

2

ジョンに同意します。次のように16進数で直接出力する方が簡単かもしれません。

printf("%x", byte);

または C++ の IOstream ライブラリを使用:

cout << hex << byte;
于 2012-08-23T16:03:47.237 に答える
1

ルックアップ テーブルを使用します。

static char const alphabet[] = "0123456789ABCDEF";

// Loop:

output[cursor++] = alphabet[byte % 16];
output[cursor++] = alphabet[byte / 16];

文字列に直接インデックスを付けることもできます:

output[cursor++] = "0123456789ABCDEF"[byte % 16];
于 2012-08-23T16:03:16.213 に答える