これは私を少し困惑させている奇妙な問題です。
このプログラムはC89で記述されており、ファイルを一度に16バイトずつchar *配列に読み込みます(freadとsizeof(char)のサイズを使用)。ファイルは「rb」フラグでfopenされます。次に、配列は、基本的に16の16進値を受け取り、それを文字列に貼り付ける関数に渡されます。各値はスペースで区切られます。
ここで奇妙なことが起こります。この関数は、私が持っているテキストファイル入力に対して、一度に16バイトの素晴らしい16進ダンプを生成します。しかし、小さなビットマップイメージで試してみると、失敗します。88ではなくffffff88のような文字列で出力されてしまいます。
16進値は、sprintf( "%02x"、input [i]);を使用して出力文字列に配置されます。ループで。
一部のファイルではこれが正しく機能するのに、他のファイルでは機能しないのはなぜですか?