45

以下UNIXシェルスクリプトで10進数を16進数に変換

hex valuesfromのみを印刷しようとしてhexdumpいます。つまり、行番号と ASCII テーブルを印刷しません。

ただし、次のコマンド ラインでは何も出力されません。

hexdump -n 50 -Cs 10 file.bin |  awk '{for(i=NF-17; i>2; --i) print $i}'
4

4 に答える 4

71

この仕事には次の使用xxdが適しています。

xxd -p -l 50 -seek 10 file.bin

からman xxd:

xxd - make a hexdump or do the reverse.

    -p | -ps | -postscript | -plain
        output in postscript continuous hexdump style. Also known as plain hexdump style.

    -l len | -len len
        stop after writing <len> octets.
 
    -seek offset
        When used after -r: revert with <offset> added to file positions found in hexdump.
于 2013-03-21T17:53:38.197 に答える
54

出力に使用する正確な形式を指定できますがhexdump、少し注意が必要です。ファイルオフセットを除いたデフォルトの出力は次のとおりです。

hexdump -e '16/1 "%02x " "\n"' file.bin

(私には、これにより各行の末尾に追加の末尾スペースが生成されるように見えますが、何らかの理由でそうではありません。)

于 2013-03-21T17:54:15.833 に答える
28

代わりに、 の使用を検討してxxd -p file.binください。

于 2013-03-21T17:15:24.770 に答える
4

まず-C、アスキー情報を出力しているものを削除します。

次に、オフセットをドロップできます

hexdump -n 50 -s 10 file.bin | cut -c 9-
于 2013-03-21T17:06:13.463 に答える