Pythonでは、bytes
とint
の間で相互に変換することが可能です。この記事では、その方法を詳しく解説します。
bytesからintへの変換
Pythonでは、bytes
からint
への変換は非常に簡単です。以下に例を示します。
# ビッグエンディアン
>>> int.from_bytes(b'\\x00\\x80', 'big')
128
# リトルエンディアン
>>> int.from_bytes(b'\\x80\\x00\\x00\\x00', 'little')
128
この場合、第二引数にエンディアンを指定します。エンディアンには、’big’(ビッグエンディアン)と’little’(リトルエンディアン)の2つがあります。
intからbytesへの変換
逆に、int
からbytes
への変換も可能です。
# ビッグエンディアン、2バイト
>>> a = 128
>>> a.to_bytes(2, 'big')
b'\\x00\\x80'
# リトルエンディアン、4バイト
>>> a.to_bytes(4, 'little')
b'\\x80\\x00\\x00\\x00'
この場合も、第二引数にエンディアンを指定します。
注意点
以上の方法はPython3.2以降でのみ使用可能です。それ以前のバージョンでは動作しないので注意が必要です。
また、int
からbytes
への変換時に指定したバイト数で表現できない大きさの場合は、OverflowError
が発生します。
まとめ
Pythonでは、bytes
とint
の間で相互に変換することが可能です。これは、通信や暗号などを扱う際に頻繁に必要となる操作で、Pythonでは非常に簡単に行うことができます。ただし、Pythonのバージョンやエンディアンに注意しながら使用する必要があります。.