Pythonでは、バイト列と文字列の相互変換が頻繁に行われます。特に、バイト列をASCII文字列に変換する場合や、その逆の操作が必要となる場面は多いです。
バイト列と文字列の相互変換
Pythonでは、encode
メソッドとdecode
メソッドを使って、文字列とバイト列の相互変換を行うことができます。
'abcd'.encode() # b'abcd'
b'abcd'.decode() # 'abcd'
これらのメソッドのデフォルトのエンコーディングはutf-8
です。
'abcd'.encode(encoding='utf-8') # b'abcd'
b'abcd'.decode(encoding='utf-8') # 'abcd'
不正なバイト列に遭遇した場合、デフォルトの挙動はエラーになります。
b'\xff'.decode() # UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
代替文字に置き換える場合、errors='replace'
を指定します。
b'\xff'.decode('utf-8', 'replace') # '�'
バイト列の16進数表記
バイト列の16進数表記は、想定しない変換で文字を壊したときや、生のデータを目で確認するために使われます。
b'\x61\x62\x63\x64'.hex() # '61626364'
以上、Pythonでバイト列と文字列の相互変換を行う方法について解説しました。これらの知識は、Pythonでのデータ処理において非常に重要です。ぜひ活用してみてください。