\

Pythonでは、bytesリテラルは文字列リテラルと同じように定義されますが、プレフィックスにbが付きます。これはPython 2.5では常に構文エラーとなりますが、Python 2.6ではbytes型と共に導入されました。

# 文字列
s = 'abcd'
# bytesリテラル
b = b'abcd'

bytesリテラルは、ASCII文字のみが許可され、127より大きい文字値は適切なエスケープシーケンスを使用して指定する必要があります。

また、Pythonではencodedecodeメソッドを使って文字列とバイト列の相互変換が可能です。

# 文字列をバイト列に変換
byte_str = 'abcd'.encode()  # b'abcd'
# バイト列を文字列に変換
str_byte = b'abcd'.decode()  # 'abcd'

これらのメソッドのデフォルトのエンコーディングはencoding='utf-8'です。

# 文字列をバイト列に変換(エンコーディング指定)
byte_str = 'abcd'.encode(encoding='utf-8')  # b'abcd'
# バイト列を文字列に変換(エンコーディング指定)
str_byte = 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のbytesリテラルは文字列とバイト列の相互変換に役立つ機能であり、プログラミングにおいて重要な概念の一つです。.

投稿者 admin

コメントを残す

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