Pythonのbytes
型は、不変(変更不可能)な整数のシーケンスで、0 <= x < 256の範囲の整数を表します。Python 3.8以降では、bytes.hex()
がオプションのsep
とbytes_per_sep
パラメータをサポートし、16進数の出力にバイト間のセパレータを挿入することができます。
以下に、Pythonのbytes
型のいくつかの使用例を示します。
# bytesの自力入力
b'\x00\x01\x02\x03' # result: b'\x00\x01\x02\x03'
b'\x64\x65\x66\x67' # result: b'defg' # asciiコードに対応した文字が表示されている
# ファイルからbytesで読込
with open('filename.bin', 'rb') as fp:
all_bytes = fp.read()
# bytesの部分切出し
a = b'\x00\x01\x02\x03'
a[1:3] # listなのでlistと同じ要領でスライスが可能
# result: b'\x01\x02'
# 整数をbytesへ変換
a = 255
a.to_bytes(2, 'little') # to_bytes(変換後のバイト数, エンディアン)
# result: b'\xff\x00'
# bytesから整数へ
a = 255
byts = a.to_bytes(2, 'little')
int.from_bytes(byts, 'little') # int.from_bytes(bytes, エンディアン)
# result: 255
# bytesから整数へ(符号付き)
a = -255
byts = a.to_bytes(2, 'little', signed=True)
int.from_bytes(byts, 'little', signed=True) # int.from_bytes(bytes, エンディアン, signed=True)
# result: -255
# 16進表記文字列からbytesへ
bytes.fromhex('F1E2f3f4')
# bytesを16進表記文字列へ
by = bytes.fromhex('F1E2f3f4')
by.hex() # result: 'f1e2f3f4'
以上のように、Pythonのbytes
型は非常に便利で、多くの操作をサポートしています。バージョンによっては、さらに便利な機能が追加されています。Pythonを使ってプログラミングを行う際には、これらの機能を活用して、より効率的なコードを書くことができます。