【Python】文字列とbyte配列を相互変換する方法

この記事では、Pythonにおける文字列とbyte配列の違いや、それらを相互変換する方法について解説しています。

文字列はテキストを表現し、byte配列はバイナリデータを扱います。

Pythonのencode()メソッドやdecode()メソッドを使うことで、文字列とbyte配列を簡単に変換する方法を学ぶことができます。

目次から探す

文字列とbyte配列の違いとは

Pythonにおいて、文字列とbyte配列は似ていますが、異なるデータ型です。

文字列はUnicode文字列を表し、byte配列はバイナリデータを表します。

文字列は人間が読みやすい形式でテキストを表現するのに対し、byte配列は機械が扱いやすい形式でバイナリデータを表現します。

文字列からbyte配列への変換方法

Pythonでは、文字列をbyte配列に変換する際にencode()メソッドを使用します。

このメソッドは文字列を指定したエンコーディング形式でバイト列に変換します。

以下はサンプルコードです。

text = "Hello, こんにちは"
byte_data = text.encode('utf-8')
print(byte_data)
b'Hello, \xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'

byte配列から文字列への変換方法

逆に、byte配列を文字列に変換する際にはdecode()メソッドを使用します。

このメソッドはバイト列を指定したエンコーディング形式で文字列に変換します。

以下はサンプルコードです。

byte_data = b'\x48\x65\x6c\x6c\x6f\x2c\x20\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'
text = byte_data.decode('utf-8')
print(text)
Hello, こんにちは

これらの方法を使うことで、文字列とbyte配列を相互変換することができます。

文字列からbyte配列への変換

Pythonのencode()メソッドを使った変換方法

Pythonでは、文字列をbyte配列に変換する際にencode()メソッドを使用します。

このメソッドは、指定したエンコーディング方式に従って文字列をバイト列に変換します。

例えば、UTF-8エンコーディングを使用して文字列をバイト列に変換する場合、以下のようにコードを記述します。

text = "こんにちは"
byte_array = text.encode('utf-8')
print(byte_array)
b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'

文字列を特定のエンコーディングでbyte配列に変換する方法

特定のエンコーディング方式を指定して文字列をバイト列に変換する方法もあります。

例えば、Shift-JISエンコーディングを使用して文字列をバイト列に変換する場合、以下のように記述します。

text = "こんにちは"
byte_array = text.encode('shift-jis')
print(byte_array)
b'\x82\xb1\x82\xf1\x82\xc9\x82\xbf\x82\xcd'

Unicodeエスケープシーケンスを使った変換方法

Unicodeエスケープシーケンスを使用して、文字列をバイト列に変換する方法もあります。

Unicodeエスケープシーケンスは\uを使ってUnicodeコードポイントを表現します。

例えば、こんにちはという文字列をUnicodeエスケープシーケンスを使ってバイト列に変換する場合、以下のように記述します。

text = "こんにちは"
byte_array = text.encode('unicode-escape')
print(byte_array)
b'\\u3053\\u3093\\u306b\\u3061\\u306f'

これらの方法を使うことで、Pythonで文字列をバイト列に変換することができます。

byte配列から文字列への変換

byte配列から文字列への変換には、Pythonのdecode()メソッドを使用する方法や特定のエンコーディングで文字列に変換する方法、さらにUnicodeエスケープシーケンスを使った変換方法があります。

それぞれの方法を順に見ていきましょう。

Pythonのdecode()メソッドを使った変換方法

Pythonのdecode()メソッドを使用すると、byte配列を文字列に変換することができます。

以下はその基本的な使い方です。

# byte配列の例
byte_data = b'Hello, World!'

# byte配列を文字列に変換
str_data = byte_data.decode('utf-8')

print(str_data)
Hello, World!

上記のコードでは、decode()メソッドを使ってutf-8エンコーディングでbyte配列を文字列に変換しています。

byte配列を特定のエンコーディングで文字列に変換する方法

特定のエンコーディングでbyte配列を文字列に変換する場合は、decode()メソッドの引数にそのエンコーディングを指定します。

以下はShift-JISエンコーディングでの例です。

# byte配列の例
byte_data = b'\x82\xb1\x82\xf1\x82\xc9\x82\xbf'

# byte配列をShift-JISエンコーディングで文字列に変換
str_data = byte_data.decode('shift-jis')

print(str_data)
こんにち

Unicodeエスケープシーケンスを使った変換方法

Unicodeエスケープシーケンスを使ってbyte配列を文字列に変換する方法もあります。

以下はその例です。

# byte配列の例
byte_data = b'\\u3053\\u3093\\u306b\\u3061\\u306f'

# Unicodeエスケープシーケンスを使って文字列に変換
str_data = byte_data.decode('unicode-escape')

print(str_data)
こんにちは

これらの方法を使うことで、byte配列を文字列に効果的に変換することができます。

目次から探す