"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je convertir des entiers en chaînes d'octets et inversement en Python ?

Comment puis-je convertir des entiers en chaînes d'octets et inversement en Python ?

Publié le 2024-11-09
Parcourir:215

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

Création de chaînes d'octets avec "bytes(n)"

La fonction "bytes(n)" dans Python 3 ne convertit pas un entier à sa représentation binaire mais crée à la place une chaîne d'octets de longueur n, remplie d'octets nuls (b'\x00'). Ce comportement provient de Python 3.2, où la méthode "to_bytes()" a été introduite comme moyen d'encoder des entiers en octets.

To_Bytes et To_Bytes

Le "to_bytes ()" permet la conversion explicite d'un entier en une représentation en octets, en spécifiant l'ordre des octets (gros-boutiste ou petit-boutiste) et la longueur. Par exemple :

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

From_Bytes et From_Bytes

La méthode complémentaire "from_bytes()" peut reconvertir une séquence d'octets en un entier :

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

Entiers non signés

La méthode "to_bytes()" fonctionne pour les entiers non négatifs (non signés). Pour gérer les entiers signés, une approche légèrement différente est nécessaire :

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)

En utilisant ces fonctions, vous pouvez encoder et décoder des entiers signés vers et depuis des séquences d'octets.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729407016. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3