5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

linuxのコマンドでバイナリを操作するときのTips

Last updated at Posted at 2020-05-06

仕事でバイナリファイルを使うことが多くなってきて、毎回ググるのもいい加減めんどうになってきたのでQiitaにまとめようと思います。
他にいい方法を知っている方がいれば情報を共有してもらえると嬉しいです!

1. バイナリファイル表示方法

私がよく使っているやつです。

xxdコマンド

$ xxd sample.bin 
00000000: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................
00000010: 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f  ................

odコマンド

  • -tx2:2Byte単位で16進数を表示
  • -z:ASCII文字表示
$ od -tx2z sample.bin # リトルエンディアン表示です
0000000 0100 0302 0504 0706 0908 0b0a 0d0c 0f0e  >................<
0000020 1110 1312 1514 1716 1918 1b1a 1d1c 1f1e  >................<
0000040

(おまけ)hexdump for VSCode

データ量が多いバイナリファイルがあるときはVSCodeの拡張機能の「hexdump for VSCode」を使っています。
使用方法は、こちらの記事を参考にさせていただきました。

2. バイナリファイル作成方法

echoコマンド + リダイレクトでバイナリファイルを作成

数Byteくらいのバイナリファイルを作成するときにおすすめです。

$ echo -en "\x00\x01\x02\x03" > sample.bin

テキストファイルからバイナリファイルを作成

$ cat sample.txt # 例)1Byte単位
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
$ cat sample.txt # 例)2Byte単位
0001 0203 0405 0607 0809 0a0b 0c0d 0e0f
1011 1213 1415 1617 1819 1a1b 1c1d 1e1f

xxdコマンドの-r -pで空白と改行は無視されるので、1Byte単位、2Byte単位~(以下略)で区切ったテキストファイルに対応できます。ありがたや。

$ cat sample.txt | xxd -r -p > sample.bin

3. バイナリファイルからunsigned char配列形式に変換する方法

今回は16を指定しているので、16Byte単位で改行されています。もっと早く知りたかった…

$ xxd -i -c 16 sample.bin 
unsigned char sample_bin[] = {
  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
};
unsigned int sample_bin_len = 32;

4. バイナリファイル編集方法

ddコマンドの存在は知っていますが、目下vimばかり使っています。

vim

  1. vimを-bオプションをつけて開く
  2. コマンドラインモードで「:%!xxd」→「バイナリ編集」→「:%!xxd -r」
  3. vimを終了

参考サイト

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?