Fungsi "bait(n)" dalam Python 3 menjana rentetan bait panjang 'n ' diisi dengan bait nol, dan bukannya menukar integer 'n' kepada perwakilan binarinya. Tingkah laku yang tidak dijangka ini berpunca daripada perubahan yang diperkenalkan dalam Python 3.2.
Untuk menukar integer kepada perwakilan binarinya, anda boleh menggunakan kaedah 'to_bytes' yang diperkenalkan dalam Python 3.2. Contoh berikut menunjukkan penggunaannya:
<code class="python">>>> (1024).to_bytes(2, byteorder='big') b'\x04\x00'</code>
Sebagai alternatif, anda boleh melaksanakan fungsi anda sendiri untuk mengendalikan penukaran integer-ke-bait:
<code class="python">def int_to_bytes(x: int) -> bytes: return x.to_bytes((x.bit_length() + 7) // 8, 'big') def int_from_bytes(xbytes: bytes) -> int: return int.from_bytes(xbytes, 'big')</code>
Kaedah 'to_bytes' hanya menyokong penukaran integer yang tidak ditandatangani. Untuk integer yang ditandatangani, pengiraan panjang bit adalah lebih kompleks:
<code class="python">def int_to_bytes(number: int) -> bytes: 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]: return int.from_bytes(binary_data, byteorder='big', signed=True)</code>
Atas ialah kandungan terperinci Mengapa \'bait(n)\' Tidak Mewakili Bentuk Perduaan bagi \'n\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!