-1

文字列を 16 進数形式でファイルに書き込もうとしています。

たとえば、「He​​llo」という文字列があるとします。

4845 4C4C 4F としてファイルに出力したい。

使用する関数が fwrite であることはわかっていますが、fwrite を使用すると、文字列がバイナリ表現ではなく "Hello" として書き込まれます。

次の関数を使用して変換を試みます: fwrite(buffer, 1, 5, output), ここで、buffer は文字列 "Hello"、output は宛先ファイル、1 は文字のサイズ、5 は数値です。何度でも書きたい。

ありがとう!

4

2 に答える 2

0

bufferゼロで終わる文字列があり、書き込み先のポインターをoutput表していると仮定すると、次のようになります。FILE

int i;

for ( i = 0; i < strlen(buffer); i++ )
    fprintf( output, "%02X", buffer[i] );

したがって、文字列の各バイトを ASCII 値としてフォーマットする必要があります。

あなたの例は「Hello」の大文字コードを示していたので、必要に応じてプロセスで大文字に変換できます。

for ( i = 0; i < strlen(buffer); i++ )
    fprintf( output, "%02X", toupper(buffer[i]) );
于 2013-11-06T02:38:26.797 に答える
0

各文字を 16 進数形式で記述する必要があるようです。sprintf を使用して、そのような各文字列を印刷することができます。

于 2013-11-06T02:28:45.067 に答える