"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > How Can I Convert Integers to Byte Strings and Back in Python?

How Can I Convert Integers to Byte Strings and Back in Python?

Published on 2024-11-09
Browse:764

How Can I Convert Integers to Byte Strings and Back in Python?

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.

Release Statement This article is reprinted at: 1729407016 If there is any infringement, please contact [email protected] to delete it
Latest tutorial More>

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