4バイトのfloatを含むバイナリファイルがあります。 od
を使用してこれらのフロートを印刷したいと思います。 ただし、od
は、最初の位置に1つの追加値を出力します。ここで何が起こっているのですか?
ファイルは次のようになります。
xxd test | head -1
0000000:932a 6541 7cdf 6b41 6c7e 7141 d7797641。* eA | .kAl〜qA.yvA
od
はこれを出力します:
cat test | od -f -An -v -w4 | head -2
14,322894 14,742062
最初に出力される値(14.32)は ない ファイルの最初の値。 2番目に出力される値(14.74)は、ファイルからの実際の最初の値です。私はいくつかの16進エディタで次のことを確認しました
932a 6541
14.74206(またはそれに非常に近い値)です。では、od
はどこから追加の値(14.32)を取得していますか?これは、他のすべてのオプションが省略されている場合にも発生します。
cat test | od -f | head -2
0000000 14,322894 14,742062 15,093365 15,404746
0000020 15,652825 15,938543 16,25734 16,616056
od
は正しいです。期待した出力は、選択したもの以外の浮動小数点値を示した2つの16進エディターに基づいています。 @schily、最初の4バイトは実際には14.32を表しているため、od
が正しいことを指摘していただきありがとうございます。