0
1

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 1 year has passed since last update.

16進数形式の文字列データを16進数の配列データに変換する

Posted at

入力情報

入力データの形式は、以下の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)

これをシェルにして使っています。以上

0
1
3

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?