Convertir hexadécimal en octet en Python
- Initialiser une valeur hexadécimale
-
Utilisez
bytes.fromhex()
pour convertir hexadécimal en octet en Python -
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.