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