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

Linda Hamilton
Libérer: 2024-10-20 14:52:02
original
764 Les gens l'ont consulté

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 découle 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 :

<code class="python">(1024).to_bytes(2, byteorder='big') == b'\x04\x00'</code>
Copier après la connexion

From_Bytes et From_Bytes

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

<code class="python">int.from_bytes(b'\x04\x00', 'big') == 1024</code>
Copier après la connexion

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 :

<code class="python">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)</code>
Copier après la connexion

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!