これはちょっと奇妙な問題です。Cのchar *配列の16進値を出力すると、バイナリ入力のために奇数値が得られます
プログラムはC89で書かれており、freadとsizeof(char)のサイズを使って、一度に16バイトのchar *配列にファイルを読み込みます。このファイルは "rb"フラグ付きで表示されます。配列は、基本的に16進数の値を取り、文字列にスティックし、各値はスペースで区切られた関数に渡されます。
ここに奇妙な部分があります。この関数は、私が持っているテキストファイルの入力に対して、一度に16バイトの素敵な16進数のダンプを生成します。しかし、私は小さなビットマップイメージで試してみるとねじれます - ffffff88のような文字列の出力は88でなく終了します。
16進数の値はsprintf( "%02x" 、入力[i]);ループで。
一部のファイルでは正しく動作しますが、他のファイルでは正常に動作しないのはなぜですか?あなたが見る何