byteをhex文字列に変換する (byteを16進数文字列に変換する)

bytearrayを使っていて、デバッグ用に内容を確認したい時にHexで表示する方法です。

byteをHexの文字に変換する方法

Hex文字に変換するのは簡単で、formatと書式'02x'を使います。

1
2
format(0x12, '02x')
# '7b'

bytearrayを一気にHex文字列に変換する方法

bytearrayの場合は配列なので、以下の方法で一気に変換することができます。

1
print(''.join(format(x, '02x') for x in byte_list))

実際の使用例はこんな感じです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# coding: UTF-8
 
byte_list = bytearray()
 
intVal = 100
byte_list.append(intVal)
byte_list.append(10)
byte_list.append(0x57)
 
# スペース無しで表示 (640a57)
print(''.join(format(x, '02x') for x in byte_list))
 
# 1バイト毎にスペースを入れて表示(64 0a 57)
print(' '.join(format(x, '02x') for x in byte_list))

pythonを使うと、シェルスクリプトでは少し扱いづらいbyte操作ができるのでbyte系のデータを作成する時にはpythonを使いました。
Excelとかでできれば、もっと視覚的にデータ作成できるかもしれませんが、また調べたら記事にしたいと思います。

0 件のコメント :

コメントを投稿