Objek Bytes dalam Python: Melangkaui Penukaran Numerik
Apabila bekerja dengan objek bait dalam Python, adalah penting untuk memahami cara bait(n) fungsi berbeza daripada penukaran angka. Melepasi integer n kepada bait(n) tidak mengembalikan perwakilan binari n, sebaliknya mencipta rentetan bait panjang n diisi dengan bait nol (x00).
Rasional Di Sebalik Gelagat
Tingkah laku ini diperkenalkan dalam Python 3.2 sebagai sebahagian daripada usaha untuk menghalang penukaran yang tidak dijangka daripada integer kepada bait. Sebelum ini, bait(n) akan melakukan penukaran integer tanpa dokumen kepada perwakilan binari, yang membawa kepada potensi isu.
Untuk menangani kekaburan ini, bait(n) telah ditakrifkan semula untuk mencipta rentetan bait yang diisi sifar. , memastikan tiada penukaran tersirat berlaku. Pembangun yang memerlukan perwakilan binari integer kini boleh menggunakan kaedah to_bytes() secara eksplisit.
Penyelesaian Alternatif
Untuk menukar integer kepada bait dengan cara terkawal, Python menyediakan kaedah int.to_bytes(). Kaedah ini membenarkan untuk menentukan susunan bait ('besar' atau 'endian kecil') dan panjang yang dikehendaki bagi rentetan bait yang terhasil.
Selain itu, fungsi pembantu tersuai boleh dibuat untuk memudahkan penukaran ini:
<code class="python">def int_to_bytes(number: int) -> bytes: """Converts an integer to bytes representing its unsigned value.""" return number.to_bytes(length=(8 + (number + (number < 0)).bit_length()) // 8, byteorder='big', signed=True) def int_from_bytes(binary_data: bytes) -> Optional[int]: """Converts a byte string to its corresponding signed integer value.""" return int.from_bytes(binary_data, byteorder='big', signed=True)</code>
Dengan memanfaatkan kaedah ini, pembangun dengan yakin boleh menukar integer kepada bait dengan cara yang selaras dengan keperluan khusus mereka.
Atas ialah kandungan terperinci Apabila Menggunakan bait(n) dalam Python, Apakah Perbezaan Utama daripada Penukaran Numerik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!