\

Pythonでは、バイト列と文字列の相互変換が可能です。これは、エンコーディングとデコーディングを使用して行います。

'abcd'.encode()  # b'abcd'
b'abcd'.decode()  # 'abcd'

これらのメソッドのデフォルトのエンコーディングは encoding='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')  # '�'

また、Python 3.5 で導入された hex 関数を使えば、16進数文字列に変換されます。

b'\\x61\\x62\\x63\\x64'.hex()  # '61626364'
'\\x61\\x62\\x63\\x64'.encode('utf-8', 'replace').hex()  # '61626364'

以上のように、Pythonではバイト列と文字列の相互変換、エンコーディング、デコーディング、16進数表記など、様々な操作が可能です。これらの知識は、バイナリデータの操作やエンコーディングの理解に役立ちます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です