The b
prefix menandakan bytes
literal string yang .
Jika Anda melihatnya digunakan dalam kode sumber Python 3, ekspresi tersebut membuat bytes
objek , bukan objek Unicodestr
biasa . Jika Anda melihatnya bergema di shell Python Anda atau sebagai bagian dari daftar, dict, atau konten container lainnya, Anda akan melihat bytes
objek yang diwakili menggunakan notasi ini.
bytes
objek pada dasarnya berisi urutan bilangan bulat dalam kisaran 0-255, tetapi ketika diwakili, Python menampilkan byte ini sebagai titik kode ASCII untuk mempermudah membaca kontennya. Setiap byte di luar dicetak berbagai karakter ASCII ditampilkan sebagai escape sequence (misalnya \n
, \x82
, dll). Sebaliknya, Anda dapat menggunakan karakter ASCII dan escape sequence untuk menentukan nilai byte; untuk nilai ASCII, nilai numeriknya digunakan (misalnya b'A'
== b'\x41'
)
Karena bytes
objek terdiri dari urutan bilangan bulat, Anda dapat membuat bytes
objek dari urutan bilangan bulat lainnya dengan nilai dalam rentang 0-255, seperti daftar:
bytes([72, 101, 108, 108, 111])
dan pengindeksan memberi Anda kembali bilangan bulat (tetapi mengiris menghasilkan bytes
nilai, karena contoh di atas, value[0]
memberi Anda 72
, tetapi value[:1]
adalah b'H'
sebagai 72 adalah titik kode ASCII untuk huruf H ).
bytes
model data biner , termasuk teks yang disandikan . Jika bytes
nilai Anda memang berisi teks, Anda harus mendekodekannya terlebih dahulu, menggunakan codec yang benar. Jika data dienkode sebagai UTF-8, misalnya, Anda dapat memperoleh str
nilai Unicode dengan:
strvalue = bytesvalue.decode('utf-8')
Sebaliknya, beralih dari teks dalam a str
objek ke bytes
Anda perlu melakukan encode . Anda perlu memutuskan encoding yang akan digunakan; defaultnya adalah menggunakan UTF-8, tetapi yang Anda perlukan sangat bergantung pada kasus penggunaan Anda:
bytesvalue = strvalue.encode('utf-8')
Anda juga dapat menggunakan konstruktor, bytes(strvalue, encoding)
untuk melakukan hal yang sama.
Baik metode decoding dan encoding membutuhkan argumen tambahan untuk menentukan bagaimana error harus ditangani .
Python 2, versi 2.6 dan 2.7 juga mendukung pembuatan literal b'..'
string menggunakan sintaks literal string, untuk memudahkan kode yang berfungsi pada Python 2 dan 3.
bytes
objek tidak dapat diubah, seperti str
string. Gunakan bytearray()
objek jika Anda perlu memiliki nilai byte yang bisa berubah.