文字列とバイト文字列の違いは何ですか? 質問する

文字列とバイト文字列の違いは何ですか? 質問する

私は「バイト文字列」( )を返すライブラリを使用しておりbytes、これを文字列に変換する必要があります。

これら 2 つには実際に違いがあるのでしょうか? これらはどのように関連しており、どのように変換すればよいのでしょうか?

ベストアンサー1

コンピュータが保存できるのはバイトだけです。

コンピュータに何かを保存するには、まずそれをエンコード、つまりバイトに変換する必要があります。例:

  • 音楽を保存する場合は、まずMP3WAVAファイルなど
  • 画像を保存する場合は、まずPNGJPEGなど
  • テキストを保存する場合は、まず次のようにエンコードする必要があります。アスキーUTF-8など

MP3、WAV、PNG、JPEG、ASCII、UTF-8 はエンコーディングの例です。エンコーディングは、オーディオ、画像、テキストなどをバイト単位で表す形式です。

Python では、バイト文字列は、バイトのシーケンスに過ぎません。人間が判読できるものではありません。内部的には、すべてをバイト文字列に変換してからコンピューターに保存する必要があります。

一方、文字列は、単に「文字列」と呼ばれることが多い、文字のシーケンスです。人間が判読できます。文字列はコンピューターに直接保存することはできず、最初にエンコード(バイト文字列に変換) する必要があります。ASCII や UTF-8 など、文字列をバイト文字列に変換できるエンコードは複数あります。

'I am a string'.encode('ASCII')

上記の Python コードは、文字列'I am a string' をASCII エンコーディングを使用してエンコードします。 上記のコードの結果はバイト文字列になります。 これを印刷すると、Python はそれを として表現します。 ただし、バイト文字列は人間が読める形式ではなくb'I am a string'、印刷時に Python が ASCII からデコードするだけであることを覚えておいてください。 Python では、バイト文字列は で表され、その後にバイト文字列の ASCII 表現が続きます。b

バイト文字列は、エンコードに使用されたエンコーディングがわかっていれば、文字列にデコードすることができます。

b'I am a string'.decode('ASCII')

上記のコードは元の文字列を返します'I am a string'

エンコードとデコードは逆の操作です。ディスクに書き込む前にすべてをエンコードする必要があり、人間が読み取る前にデコードする必要があります。

おすすめ記事