"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso converter inteiros em strings de bytes e vice-versa em Python?

Como posso converter inteiros em strings de bytes e vice-versa em Python?

Publicado em 2024-11-09
Navegar:838

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

Criando strings de bytes com "bytes(n)"

A função "bytes(n)" em Python 3 não converte um inteiro para sua representação binária, mas em vez disso cria uma sequência de bytes de comprimento n, preenchida com bytes nulos (b'\x00'). Esse comportamento vem do Python 3.2, onde o método "to_bytes()" foi introduzido como um meio de codificar inteiros em bytes.

To_Bytes e To_Bytes

()" permite a conversão explícita de um número inteiro em uma representação de bytes, especificando a ordem dos bytes (big-endian ou little-endian) e o comprimento. Por exemplo:

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

From_Bytes e From_Bytes

O método complementar "from_bytes()" pode converter uma sequência de bytes de volta em um inteiro:

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

Inteiros não assinados

O método "to_bytes()" funciona para números inteiros não negativos (sem sinal). Para lidar com números inteiros assinados, é necessária uma abordagem ligeiramente 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)

Usando essas funções, você pode codificar e decodificar inteiros assinados de e para sequências de bytes.

Declaração de lançamento Este artigo foi reimpresso em: 1729407016 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3