The bprefix menandakan bytesliteral string yang .
Jika Anda melihatnya digunakan dalam kode sumber Python 3, ekspresi tersebut membuat bytesobjek , 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 bytesobjek yang diwakili menggunakan notasi ini.
bytesobjek 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 bytesobjek terdiri dari urutan bilangan bulat, Anda dapat membuat bytesobjek 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 ).
bytesmodel data biner , termasuk teks yang disandikan . Jika bytesnilai Anda memang berisi teks, Anda harus mendekodekannya terlebih dahulu, menggunakan codec yang benar. Jika data dienkode sebagai UTF-8, misalnya, Anda dapat memperoleh strnilai Unicode dengan:
strvalue = bytesvalue.decode('utf-8')
Sebaliknya, beralih dari teks dalam a str objek ke bytesAnda 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.
bytesobjek tidak dapat diubah, seperti strstring. Gunakan bytearray()objek jika Anda perlu memiliki nilai byte yang bisa berubah.