Creating Byte Strings with "bytes(n)"
The "bytes(n)" function in Python 3 doesn't convert an integer to its binary representation but instead creates a byte string of length n, filled with null bytes (b'x00'). This behavior stems from Python 3.2, where the "to_bytes()" method was introduced as a means to encode integers into bytes.
To_Bytes and To_Bytes
The "to_bytes()" method allows explicit conversion of an integer to a byte representation, specifying the byte order (big-endian or little-endian) and the length. For example:
<code class="python">(1024).to_bytes(2, byteorder='big') == b'\x04\x00'</code>
From_Bytes and From_Bytes
The complementary "from_bytes()" method can convert a byte sequence back into an integer:
<code class="python">int.from_bytes(b'\x04\x00', 'big') == 1024</code>
Unsigned Integers
The "to_bytes()" method works for non-negative (unsigned) integers. To handle signed integers, a slightly different approach is necessary:
<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>
Using these functions, you can encode and decode signed integers to and from byte sequences.
The above is the detailed content of How Can I Convert Integers to Byte Strings and Back in Python?. For more information, please follow other related articles on the PHP Chinese website!