shスクリプトからバイナリファイルを作るにはどうすればよいか

投稿者: Anonymous

ちょっとしたバイナリファイルが必要なときはecho -n -eで作っていますが、もっと楽にできる方法をご存じないでしょうか。

既に存在するバイナリファイルの変更は、odの結果をgawkでecho形式に加工してbashに渡していますが、新規に作るときが悩ましいです。余裕があればプログラムを書いて作っていますが、もっと手軽にできる方法を探しています。

バイナリファイルを作る元の表現形式

  • 内容はランダムでよい
  • 値は指定したい(16進数だけでも可、できれば文字列、10進数、16進数の混在が指定できるとなお良い)

実行環境

WSLを含むUnix系の環境

解決

シェルスクリプト内でperlを使うことに抵抗がないなら、packを使うと第1引数のテンプレート文字列で変換方法を指定しつつ柔軟にバイナリ化させることが出来ます。

$ perl -e 'print pack( "NVnvCa15", 0x12345678, 0x12345678, 0xabcd, 0xabcd, 9, "test string" )' | hexdump -C
00000000  12 34 56 78 78 56 34 12  ab cd cd ab 09 74 65 73  |.4VxxV4......tes|
00000010  74 20 73 74 72 69 6e 67  00 00 00 00              |t string....|
0000001c
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *