Home  >  Article  >  Backend Development  >  How Can I Convert Integers to Byte Strings and Back in Python?

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-20 14:52:02770browse

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:

<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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn