surga Lab

営業部でも開発したい!!

16進数文字列をバイナリ形式に変換するpython3

こちら16進数文字列のファイルをバイナリ形式ファイルで吐き出すものになります。

バイナリデータが欲しいのに、なぜか文字列となっていたときに有意です。

import math

fString = "48656c6c6f"

// 文字列を16進数に
num = int(fString, 16)

// to_bytes
// 1つめの引数はバイト数 ※1
// byteorderで最上位のバイトがバイト配列の最初になります
bytes = num.to_bytes(int(len(fString)/2), byteorder='big')

※1 10バイトでやると
000000000048656c6c6f
6バイトだと
0048656c6c6f

python3.2以降みたいです。

https://docs.python.jp/3/library/stdtypes.html