"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo convertir números enteros en cadenas de bytes y viceversa en Python?

¿Cómo puedo convertir números enteros en cadenas de bytes y viceversa en Python?

Publicado el 2024-11-09
Navegar:502

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

Creación de cadenas de bytes con "bytes(n)"

La función "bytes(n)" en Python 3 no convierte un entero a su representación binaria, sino que crea una cadena de bytes de longitud n, llena de bytes nulos (b'\x00'). Este comportamiento proviene de Python 3.2, donde se introdujo el método "to_bytes()" como un medio para codificar números enteros en bytes.

To_Bytes y To_Bytes

El método "to_bytes" ()" permite la conversión explícita de un número entero a una representación de bytes, especificando el orden de los bytes (big-endian o little-endian) y la longitud. Por ejemplo:

(1024).to_bytes(2, byteorder='big') == b'\x04\x00'

From_Bytes y From_Bytes

El método complementario "from_bytes()" puede convertir una secuencia de bytes nuevamente en un número entero:

int.from_bytes(b'\x04\x00', 'big') == 1024

Enteros sin signo

El método "to_bytes()" funciona para enteros no negativos (sin signo). Para manejar enteros con signo, es necesario un enfoque ligeramente diferente:

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)

Con estas funciones, puede codificar y decodificar enteros con signo hacia y desde secuencias de bytes.

Declaración de liberación Este artículo se reimprime en: 1729407016 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3