Maison  >  Article  >  développement back-end  >  Comment convertir une chaîne d’octets en entier en Python ?

Comment convertir une chaîne d’octets en entier en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 13:13:03994parcourir

How to convert a string of bytes to an integer in Python?

Conversion d'une chaîne d'octets en un entier en Python

Une tâche courante lorsque l'on travaille avec des données en Python est la nécessité de convertir une chaîne d'octets en un entier. Cela peut être fait de plusieurs manières, en fonction de la version de Python et des exigences spécifiques.

Utilisation de int.from_bytes() (Python 3.2)

Dans Python 3.2 et versions ultérieures, la méthode recommandée pour la conversion d'une chaîne d'octets en entier est la fonction int.from_bytes(). Cette fonction prend deux arguments :

  1. La chaîne d'octets à convertir.
  2. Le boutisme de la chaîne d'octets, qui peut être "grande" ou "petite".

Par exemple, pour convertir la chaîne d'octets 'yxccxa6xbb' en un entier dans l'ordre big-endian, vous utiliserez le code suivant :

<code class="python">int.from_bytes(b'y\xcc\xa6\xbb', byteorder='big')</code>

Cela renverrait la valeur entière 2043455163.

Pour convertir la même chaîne d'octets en un entier dans l'ordre petit-boutiste, vous utiliserez le code suivant :

<code class="python">int.from_bytes(b'y\xcc\xa6\xbb', byteorder='little')</code>

Cela renverrait la valeur entière 3148270713.

Utilisation du module struct

Une autre méthode pour convertir une chaîne d'octets en entier consiste à utiliser le module struct. Le module struct fournit un certain nombre de fonctions pour compresser et décompresser des données dans différents formats. Pour convertir une chaîne d'octets en entier à l'aide du module struct, vous devez utiliser le code suivant :

<code class="python">import struct

int_value = struct.unpack('>L', b'y\xcc\xa6\xbb')[0]</code>

L'argument '>L' spécifie que la chaîne d'octets doit être interprétée comme un petit-boutiste , entier 32 bits non signé.

Utilisation d'une fonction personnalisée

Si vous avez besoin de plus de contrôle sur le processus de conversion, vous pouvez également écrire votre propre fonction personnalisée pour convertir une chaîne d'octets en nombre entier. . Voici un exemple de fonction personnalisée qui convertit une chaîne d'octets en un entier dans l'ordre big-endian :

<code class="python">def bytes_to_int(bytestring):
    """Convert a string of bytes to an integer."""

    value = 0
    for byte in bytestring:
        value <<= 8
        value |= byte

    return value</code>

Cette fonction fonctionne en itérant sur la chaîne d'octets et en décalant la valeur actuelle de 8 bits vers la gauche. pour chaque octet. La valeur d'octet est ensuite ajoutée à la valeur actuelle, ce qui donne la valeur entière finale.

Quelle que soit la méthode que vous choisissez, la conversion d'une chaîne d'octets en entier en Python est un processus simple. En comprenant les différentes options disponibles, vous pourrez choisir la méthode qui correspond le mieux à vos besoins.

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!

Déclaration:
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