過去の日記

2016-10-21 [長年日記]

16進ダンプ表示するワンライナー [Python]

python3 -c 'from signal import signal, SIGPIPE, SIG_DFL ;signal(SIGPIPE,SIG_DFL); import sys, itertools;
f = open(sys.argv[1], "br") if 1 < len(sys.argv) else sys.stdin.buffer;
b = (f.read(16) for _ in itertools.repeat(None));
h = lambda x: "{:02x}".format(x);
any(not l or print(" ".join(map(h, l))) for l in b);
f.close() if 1 < len(sys.argv) else None'

というメモ。

本当はワンライナーだけど改行を入れてみた。
ファイル名指定(1つ)か標準入力から。


$ alias hexview='python3 -c '\''from (略)  else None'\'
$ hexview Downloads/ubuntu-16.04.1-server-amd64.iso| head -n 10
45 52 08 00 00 00 90 90 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
33 ed fa 8e d5 bc 00 7c fb fc 66 31 db 66 31 c9
66 53 66 51 06 57 8e dd 8e c5 52 be 00 7c bf 00
06 b9 00 01 f3 a5 ea 4b 06 00 00 52 b4 41 bb aa
55 31 c9 30 f6 f9 cd 13 72 16 81 fb 55 aa 75 10
83 e1 01 74 0b 66 c7 06 f1 06 b4 42 eb 15 eb 00
5a 51 b4 08 cd 13 83 e1 3f 5b 51 0f b6 c6 40 50
f7 e1 53 52 50 bb 00 7c b9 04 00 66 a1 b0 07 e8
44 00 0f 82 80 00 66 40 80 c7 02 e2 f2 66 81 3e


じっさいは od を使うんだけどね。