Chaîne à hexadécimal en python

Chaîne à hexadécimal en python

HexaDecimal a une base de 16, et nous pouvons représenter une chaîne au format hexadécimal en utilisant le préfixe 0x.

Nous pouvons convertir la chaîne en hexadécimal en utilisant les méthodes suivantes:

  1. Utilisation de la méthode Hex (N)
  2. En utilisant la méthode Encode ()
  3. Utilisation de la méthode littéral_eval ()

Méthode 1: Utilisation de l'hex ()

Nous pouvons convertir la chaîne en hexadécimal en utilisant la méthode hex (). La méthode hex () accepte le paramètre sous forme entière, et pour cela, nous devons d'abord convertir la chaîne en entier, puis transmis cette valeur en méthode hex () comme indiqué ci-dessous:

Exemple: string_to_hex.py

# string_to_hex.py
str = "245fc"
# passez le str au int () pour le convertir en base16 int
base16int = int (str, 16)
# Imprimez la chaîne convertie en valeur int HexaDecimal Base16
imprimer ("valeur", base16int)
print ("valeur", type (base16int))
hex_value = hex (base16int)
Print (hex_value)
# chcing le type de valeur
print (type (hex_value))

Sortir:

valeur
0x245fc

Ligne 3: Nous avons créé une chaîne pour la démo.

Ligne 6: Nous passons cette chaîne à la méthode int () avec la base 16. Maintenant, cette méthode int () convertira la chaîne en valeur entière hexadécimale.

Ligne 9: Nous imprimons la valeur que nous obtenons après avoir converti la chaîne en hexadécimal entier.

Ligne 10: Nous imprimons également le type de valeur pour confirmer que la chaîne est maintenant sous la forme d'un entier.

Ligne 12: Nous savons que la méthode hexadécimale (n) intégrée accepte la valeur entière, convertissant l'entier en chaîne hexadécimale. C'est pourquoi nous devons convertir la chaîne en un entier pour la passer dans la méthode hex (). Nous avons transmis cette valeur de base16int à la méthode hex () et avons obtenu le hex_value, String hexadécimal.

Ligne 13: Nous imprimons cette valeur hexadécimale convertie.

Ligne 16: Nous imprimons le type de valeur hexadécimale convertie, qui montre dans la sortie qu'il s'agit d'un type de chaîne.

Donc, maintenant nous avons converti la chaîne en valeur hexadécimale.

Méthode 2: Convertir la chaîne en hexadécimal à l'aide de l'encode ()

Nous pouvons également convertir la chaîne normale en une chaîne hexadécimale qui n'a pas de caractère hexadécimal. Pour cela, nous devons convertir la chaîne en octet en utilisant la méthode Encode (), puis nous pouvons convertir la chaîne en hexadécimal comme indiqué ci-dessous:

# string_to_hex_utf8.py
# Convertir la chaîne en octets
str = 'Linuxhint'.Encode ('UTF-8')
# Imprimez la chaîne convertie en octets
imprimer (str)
# Convertir les octets de chaîne en chaîne hexadécimale
hex_str = str.hex ()
# Imprimez le type de valeur hexadécimale converti
imprimer (type (hex_str))

Sortir:

Ligne 4 à 7: Nous avons créé une chaîne qui n'a pas de caractère hexadécimal. Puis convertir ces chaînes en octets en utilisant la méthode Encode (). Et puis, nous imprimons ces octets, que nous pouvons voir dans la ligne de sortie numéro 1.

Ligne 10 à 13: Nous appelons la méthode hex () en utilisant l'opérateur de points, et maintenant les octets sont convertis en valeur de chaîne hexadécimale dont nous avons besoin. Pour confirmer le type de la chaîne de résultats, nous imprimons simplement le numéro de ligne 13, et la sortie montre qu'elle est dans un type hexadécimal de chaîne.

Méthode 3. En utilisant AST.Méthode littéral_eval ()

Nous pouvons également convertir la chaîne en un entier en utilisant la méthode de la bibliothèque AST Litational_eval. Cette méthode convertit également la chaîne en un entier pour utiliser la méthode hex () pour convertir la chaîne en chaîne hexadécimale. Mais cette méthode n'accepte que des caractères de préfixe 0x.

# string_to_hex_utf8.py
De AST IMPORT LITÉRAL_EVAL
str = "0xaaa"
# Convertir la chaîne en entier
convert_str = littéral_eval (str)
# Imprimez la valeur et le type du convert_str
imprimer (convert_str)
print ("type", type (convert_str))
# passer le convert_str à la méthode hex ()
hex_value = hex (convert_str)
Print (hex_value)
# chcing le type de valeur
print (type (hex_value))

Sortir:

2730
taper
0xaaa

Ligne 2 à 10: Nous importons la méthode litteral_eval () à partir de la bibliothèque AST. Ensuite, nous créons une chaîne avec le préfixe 0x. Ensuite, nous avons passé cette chaîne à la méthode littéral_eval () et l'avons convertie en entier. Pour confirmer que la sortie est sous forme entier, nous l'imprimons dans la ligne numéro 9. Nous imprimons également le type de sortie, ce qui montre qu'il s'agit d'un entier.

Ligne 13 à 17: Nous connaissons la méthode hexagonale (n) intégrée qui accepte la valeur entière, convertissant l'entier en chaîne hexadécimale. C'est pourquoi nous devons convertir la chaîne en un entier pour la passer dans la méthode hex (). Nous avons passé cette valeur convert_str (entier) à la méthode hex () et avons obtenu le hex_value, string hexadécimal. Nous imprimons cette valeur hexadécimale convertie. Nous imprimons également le type de valeur hexadécimale convertie, ce qui montre qu'il s'agit d'un type hexadécimal de chaîne.

Exception d'erreur (TypeError):

Parfois, nous obtiendrons des erreurs tout en convertissant la chaîne en une chaîne hexadécimale. La raison derrière cela est que la méthode hex () n'accepte que la valeur entière comme un paramètre.

string_hex = "0xff"
hex_output = hex (string_hex)
imprimer (hex_output)

Sortir:

1
TypeError: l'objet «STR» ne peut pas être interprété comme un entier

Conclusion:

Nous avons donc vu différentes méthodes pour convertir la chaîne en une chaîne en minuscules hexadécimaux. La méthode hex () est très populaire en raison de son utilisation facile. Mais parfois, nous voulons convertir la chaîne sans utiliser le préfixe 0x, donc dans ce cas, nous pouvons utiliser la méthode ENTE ENCODE (), comme nous l'avons déjà vu dans l'article.

Le code de cet article est disponible sur le lien GitHub ci-dessous:

https: // github.com / shekharpandey89 / string-to-hex-conversion