Maison  >  Article  >  développement back-end  >  Comment convertir une chaîne d'octets en un entier en Python : quelle méthode est la meilleure ?

Comment convertir une chaîne d'octets en un entier en Python : quelle méthode est la meilleure ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 04:04:02225parcourir

How to Convert a Byte String to an Integer in Python: Which Method is Best?

Comment convertir une chaîne d'octets en un entier en Python

La conversion d'une chaîne d'octets en un entier en Python peut être réalisée en utilisant divers méthodes, dont certaines offrent de meilleures performances que d'autres.

Fonction intégrée : int.from_bytes()

Dans les versions Python 3.2 et supérieures, vous pouvez directement convertir une chaîne d'octets en un entier en utilisant la fonction int.from_bytes() :

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

Ici, l'ordre des octets peut être « grand » ou « petit » pour spécifier le caractère boutien de la chaîne d'octets. Big-endian signifie que l'octet le plus significatif est stocké en premier, tandis que small-endian signifie que l'octet le moins significatif est stocké en premier.

Utilisation de la représentation binaire

Une autre approche consiste à convertissez la chaîne d'octets en sa représentation binaire, puis appliquez la fonction int() :

<code class="python">my_int = int(''.join(format(byte, '08b') for byte in b'y\xcc\xa6\xbb'[::-1]), 2)</code>

Cette méthode est plus lente que int.from_bytes(), mais elle peut être utile si vous devez travailler avec des données binaires directement.

Fonction personnalisée

Vous pouvez également créer votre propre fonction personnalisée pour convertir une chaîne d'octets en entier :

<code class="python">def convert_bytes_to_int(byte_string, endianness='big'):
    if endianness == 'big':
        return sum(ord(c) << (i * 8) for i, c in enumerate(byte_string))
    else:
        return sum(ord(c) << (len(byte_string) - i - 1) * 8 for i, c in enumerate(byte_string))</code>

Comparaison des performances

Les performances de ces différentes méthodes peuvent varier en fonction de la longueur et du boutisme de la chaîne d'octets. Généralement, int.from_bytes() est la méthode la plus rapide, suivie de la méthode de représentation binaire puis de la fonction personnalisée.

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