入力情報
入力データの形式は、以下の2通り。
1)16進数ダンプ形式
- スペースや改行区切りで1バイトづつに区切られている
03 fb fb fb 4d 05 3c d0 66 00 ec cf 66 00 cc d2
0a 62 f0 cf 66 00 3c d0 66 00 00 00 00 00 45 f7
44 00 0c d0 66 00 f0 ff 50 05 48 d0 66 00 70 f5
74 01 98 da 67 01 0c 80 00 00 b0 c3 48 05 ff ff
ff
2)16進数ストリーム形式
- スペースや改行無しで連続している
03fbfbfb4d053cd06600eccf6600ccd20a62f0cf66003cd066000000000045f744000cd06600f0ff500548d0660070f5740198da67010c800000b0c34805ffffff
出力情報
上記のどちらの形式も、下記のような16進数の配列データの文字に変換する。
[ 0x03, 0xfb, 0xfb, 0xfb, 0x4d, 0x05, 0x3c, 0xd0, 0x66, 0x00, 0xec, 0xcf, 0x66, 0x00, 0xcc, 0xd2,
0x0a, 0x62, 0xf0, 0xcf, 0x66, 0x00, 0x3c, 0xd0, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xf7,
0x44, 0x00, 0x0c, 0xd0, 0x66, 0x00, 0xf0, 0xff, 0x50, 0x05, 0x48, 0xd0, 0x66, 0x00, 0x70, 0xf5,
0x74, 0x01, 0x98, 0xda, 0x67, 0x01, 0x0c, 0x80, 0x00, 0x00, 0xb0, 0xc3, 0x48, 0x05, 0xff, 0xff,
0xff, ]
この結果をプログラムの一部にコピペして使用します。
変換プログラム
Pythonで実装しました。
# 16進数ダンプ形式 or 16進数ストリーム形式
input_data = """
03fbfbfb4d053cd06600eccf6600ccd20a62f0cf66003cd066000000000045f744000cd06600f0ff500548d0660070f5740198da67010c800000b0c34805ffffff
"""
if input_data[0] == '\n': input_data = input_data[1:]
if input_data[-1] == '\n': input_data = input_data[:-1]
if ' ' in input_data:
c = input_data.split()
else:
c = [input_data[n:n+2] for n in range(0, len(input_data), 2)]
s = '\n[ '
for n in range(len(c)):
if n>0 and n%16==0: s += '\n '
s += '0x' + c[n] + ', '
s += ']\n'
print(s)
これをシェルにして使っています。以上