Pythonでは、バイト列と16進数の相互変換を行うためのいくつかの方法があります。
整数と16進数文字列の相互変換
Pythonでは、ビルトインの format
関数や hex
を使うことができます。
>>> format(0xabcd, 'x')
'abcd'
>>> hex(0xabcd)
'0xabcd'
>>> '%02x' % 0xabcd
'abcd'
また、str.format
も使うことができます。
>>> '{:02x}'.format(0xabcd)
'abcd'
16進数文字列を整数に変換するには int
を使います。
>>> int('0xabcd', 16)
43981
>>> int('abcd', 16)
43981
16進数文字列とバイト列の相互変換
bytes.fromhex
と bytes.hex
は組み込みのメソッドです。bytes.hex
は Python 3.5 で追加されました。
>>> bytes.fromhex('abcd')
b'\\xab\\xcd'
>>> b'\\xab\\xcd'.hex()
'abcd'
binascii.unhexlify
と binascii.hexlify
も使うことができますが、binascii
モジュールをインポートする必要があります。
>>> import binascii
>>> binascii.unhexlify('abcd')
b'\\xab\\xcd'
>>> str(binascii.hexlify(b'\\xab\\xcd'), 'utf-8')
'abcd'
整数とバイト列の相互変換
int.to_bytes
と int.from_bytes
を使うことができます。
>>> x = 0xabcd
>>> x.to_bytes((x.bit_length() + 7) // 8, byteorder='big')
b'\\xab\\xcd'
>>> format(int.from_bytes(b'\\xab\\xcd', byteorder='big'), 'x')
'abcd'
以上のように、Pythonではバイト列と16進数の相互変換を行うための多くの方法があります。これらの方法を理解し、適切に使用することで、データの操作や処理がより簡単になります。