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