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:
(1024).to_bytes(2, byteorder='big') == b'\x04\x00'
From_Bytes and From_Bytes
The complementary "from_bytes()" method can convert a byte sequence back into an integer:
int.from_bytes(b'\x04\x00', 'big') == 1024
Unsigned Integers
The "to_bytes()" method works for non-negative (unsigned) integers. To handle signed integers, a slightly different approach is necessary:
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)
Using these functions, you can encode and decode signed integers to and from byte sequences.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3