16 進ダンプ使用中に不正なバイト数が発生しました

16 進ダンプ使用中に不正なバイト数が発生しました

次のレコードを含むバイナリ ファイルを表示しようとしています:

8 bytes unsigned int
4 bytes unsigned int
4 bytes unsigned int
4 bytes unsigned int
4 bytes unsigned int

次のように表示してみますhexdump

hexdump -v -e '1/8 "%015d " 4/4 " %6d" "\n"' binfile

しかし、私はこう思います:

hexdump: d: bad byte count

私は FreeBSD 12 を使用しています - 該当する場合 -

答え1

によるマニュアルページ

     %d, %i, %o, %u, %X, %x  Four byte default, one, two and four byte
                             counts supported.

また、8バイトがサポートされている整数型は存在しないようです( も必要であり%u%d署名なしint)。

代わりに以下を使用できますperl:

perl -ne 'BEGIN{$/ = \24} # 24 byte input records
          printf "%015u %6u %6u %6u %6u\n", unpack "QL4"' < binfile

QL41 つの符号なし 4 進数(64 ビット)とそれに続く 4 つの符号なし long(32 ビット))

関連情報