Select Language

AI Technology Community

2.21、Python strとbytesの変換

Python 3では、str型とbytes型の両方がサポートされており、これらは相互に変換することができます。例えば、strからbytesに変換するには、encode()メンバ関数を使用することができます。

>>> a = "abc"
>>> a'abc'
>>> b = a.encode("utf-8")
>>> type(b)<class 'bytes'>

以下のコードは、中国語を含むstr型がどのようにbytes型に変換されるかを示しています。

>>> a = "最爱中国"         # str型
>>> len(a)                 # 長さは4、4文字
4
>>> type(a)                # 型は<class 'str'>
>>> b = a.encode("utf-8")  # utf-8方式でstr型に変換
>>> type(b)<class 'bytes'>          
>>> len(b)                 # バイト数は12、utf-8では各中国語文字は3バイトで表される
12
>>> b                      # 各バイトの内容
b'\xe6\x9c\x80\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'

bytes型からstr型に変換するには、メンバ関数decode()を使用することができます。以下のコードは、一般的なラテン文字がどのように変換されるかを示しています。

>>> b = b"abc"
>>> type(b)<class 'bytes'>
>>> len(b)
3
>>> a = b.decode("utf-8")
>>> type(a)<class 'str'>
>>> len(a)
3
>>> a'abc'

以下のコードは、メンバ関数decode()がbytes型を中国語文字を含むstr型にどのように変換するかを示しています。

>>> b = b'\xe6\x9c\x80\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'
>>> len(b)                 # バイト数
12
>>> type(b)
< class 'bytes'>
>>> b
b'\xe6\x9c\x80\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'
>>> a = b.decode("utf-8")  # utf-8形式でデコードし、3バイトが1つの中国語文字を表す
>>> type(a)<class 'str'>
>>> len(a)                 # 文字数
4
>>> a'最爱中国'


post
  • 26

    item of content
Pythonの基本データ型は全部で26章あります。
この章では、整数型、浮動小数点数、文字列、ブール型、リスト、タプル、セットおよび辞書など、Pythonが提供する基本的なデータ型について紹介します。また、これらのデータ型に対する演算操作についても解説します。
私たちはPythonが強タイプ言語であることを知っています。つまり、各変数の型は特定の時点でのみ確定します。言い換えれば、Pythonにおける任意の生存しているオブジェクトの型は一意です。異なる型のオブジェクトには異なる属性があり、異なる操作を実行できます。
さらに、この章の最後では変数やオブジェクトなどの概念についても触れられます。それぞれのオブジェクトには確定した型があり、各変数は特定のオブジェクトを指し示します。