Convertir hexadécimal en octet en Python

  1. Initialiser une valeur hexadécimale
  2. Utilisez bytes.fromhex() pour convertir hexadécimal en octet en Python
  3. Utilisez le module unhexlify pour convertir hexadécimal en octet en Python

Ce tutoriel présente la manière de convertir des valeurs hexadécimales en un octet littéral en Python.

Les valeurs hexadécimales ou hexadécimales sont une représentation d’un nombre composé de 16 symboles au lieu des 10 symboles habituels en valeurs décimales. Les nombres de 0 à 9 et les caractères a à e constituent les 16 symboles hexadécimaux.

Par exemple, la conversion hexadécimale pour le nombre 1000 est 3E8.

Initialiser une valeur hexadécimale

Créons une valeur hexadécimale en utilisant une chaîne de caractères et convertissons l’expression A quick brown fox en une valeur hexadécimale en utilisant la fonction hexlify() qui est une fonction du module binascii.

De plus, pour convertir une chaîne en hexadécimal, il faudrait convertir la chaîne en octet pour pouvoir la convertir en hexadécimal.

import binascii
str_val = 'A quick brown fox'.encode('utf-8')
hex_val = binascii.hexlify(str_val).decode('utf-8')

print(hex_val)

Production :

4120717569636b2062726f776e20666f78

Maintenant que nous avons réussi à convertir une chaîne de caractères en hexadécimal, voyons comment convertir un hexadécimal en octet.

Utilisez bytes.fromhex() pour convertir hexadécimal en octet en Python

La fonction bytes.fromhex() accepte un seul argument de valeur hexadécimale et le convertit en un octet littéral.

En prenant la valeur hexadécimale du résultat précédent, utilisez fromhex() pour la convertir en un octet littéral.

hex_val = '4120717569636b2062726f776e20666f78'

print(bytes.fromhex(hex_val))

Production :

Byte value:  b'A quick brown fox'

Le résultat produira l’octet littéral, qui est la phrase convertie en hexadécimal préfixé par la lettre b pour spécifier que la valeur est un octet littéral.

Utilisez le module unhexlify pour convertir hexadécimal en octet en Python

Le module Python binascii contient des fonctions utilitaires efficaces pour les opérations binaires et ASCII. unhexlify() est une fonction du module binascii qui convertit une valeur hexadécimale en un octet littéral.

Initialisons un nouvel exemple avec des caractères spéciaux non-ASCII, qui seront ensuite convertis en valeur hexadécimale. L’exemple sera la traduction grecque de l’expression A quick brown fox.

import binascii
from binascii import unhexlify

str_val = 'Μια γρήγορη καφέ αλεπού'.encode('utf-8') #A quick brown fox in Greek translation
hex_val = binascii.hexlify(str_val).decode('utf-8')

print('String value: ', str_val.decode('utf-8'))
print('Hexadecimal: ', hex_val)
print('Byte value: ', unhexlify(hex_val))

Production :

String value:  Μια γρήγορη καφέ αλεπού
Hexadecimal:  ce9cceb9ceb120ceb3cf81ceaeceb3cebfcf81ceb720cebaceb1cf86cead20ceb1cebbceb5cf80cebfcf8d
Byte value:  b'\xce\x9c\xce\xb9\xce\xb1 \xce\xb3\xcf\x81\xce\xae\xce\xb3\xce\xbf\xcf\x81\xce\xb7 \xce\xba\xce\xb1\xcf\x86\xce\xad \xce\xb1\xce\xbb\xce\xb5\xcf\x80\xce\xbf\xcf\x8d'

Nous avons maintenant converti avec succès les valeurs hexadécimales en octets.

Dans cet article, nous avons couvert l’utilisation de fromhex() et binascii.unhexlify() pour convertir des valeurs hexadécimales en octets littéraux en Python. fromhex() est préférable si vous ne voulez pas ajouter d’importations dans votre code source. Sinon, les deux fonctions fourniront le même résultat.

Article connexe - Python Bytes

  • Comment convertir une chaîne de caractères en octets en Python
  • Article connexe - Python Hex

  • Convertir un octet en hexadécimal en Python
  • Comment convertir des Int en octets en Python 2 et Python 3