Python Programming

Conversion Hex vers Base64 Efficace en Python

Spread the love

Base64 et l’hexadécimal (hex) sont des schémas d’encodage essentiels pour représenter des données binaires au format texte. Base64 excelle dans la transmission de données via des supports uniquement textuels, tandis que l’hexadécimal offre une représentation des données binaires lisible par l’homme. Ce guide détaille des méthodes Python efficaces pour convertir des chaînes hexadécimales en Base64.

Table des matières

Conversion HEX vers BASE64 avec le module codecs

Le module codecs offre une gestion polyvalente de l’encodage, incluant l’hexadécimal et Base64. Cette méthode est concise et efficace.


import codecs

def hex_to_base64_codecs(hex_string):
  """Convertit une chaîne hexadécimale en une chaîne encodée Base64 en utilisant le module codecs.

  Args:
    hex_string: La chaîne hexadécimale à convertir.

  Returns:
    La chaîne encodée Base64. Renvoie None si l'entrée est invalide.
  """
  try:
    bytes_object = codecs.decode(hex_string, 'hex')
    base64_bytes = codecs.encode(bytes_object, 'base64')
    return base64_bytes.decode('utf-8')
  except Exception as e:
    print(f"Erreur : {e}")
    return None

hex_string = "48656c6c6f20576f726c64"
base64_string = hex_to_base64_codecs(hex_string)
print(f"Hex : {hex_string}")
print(f"Base64 : {base64_string}")  # Output: SGVsbG8gV29ybGQ=

Ce code décode la chaîne hexadécimale en octets à l’aide de codecs.decode('hex'), l’encode en Base64 avec codecs.encode('base64'), et enfin décode le résultat en une chaîne à l’aide de .decode('utf-8'). Une gestion robuste des erreurs assure une gestion élégante des entrées invalides.

Conversion HEX vers BASE64 avec le module base64

Le module base64 gère directement l’encodage/décodage Base64. Cependant, il nécessite une entrée en octets, nécessitant une étape de conversion à partir de la chaîne hexadécimale.


import base64

def hex_to_base64_base64(hex_string):
  """Convertit une chaîne hexadécimale en une chaîne encodée Base64 en utilisant le module base64.

  Args:
    hex_string: La chaîne hexadécimale à convertir.

  Returns:
    La chaîne encodée Base64. Renvoie None si l'entrée est invalide.
  """
  try:
    bytes_object = bytes.fromhex(hex_string)
    base64_bytes = base64.b64encode(bytes_object)
    return base64_bytes.decode('utf-8')
  except Exception as e:
    print(f"Erreur : {e}")
    return None

hex_string = "48656c6c6f20576f726c64"
base64_string = hex_to_base64_base64(hex_string)
print(f"Hex : {hex_string}")
print(f"Base64 : {base64_string}")  # Output: SGVsbG8gV29ybGQ=

Ceci utilise bytes.fromhex() pour une conversion directe hexadécimal-octets avant l’encodage base64.b64encode().

Conversion HEX vers BASE64 avec le module binascii

Le module binascii fournit des conversions de représentation binaire vers diverses représentations, y compris l’hexadécimal et l’ASCII.


import binascii
import base64

def hex_to_base64_binascii(hex_string):
  """Convertit une chaîne hexadécimale en une chaîne encodée Base64 en utilisant le module binascii.

  Args:
    hex_string: La chaîne hexadécimale à convertir.

  Returns:
    La chaîne encodée Base64. Renvoie None si l'entrée est invalide.
  """
  try:
    bytes_object = binascii.unhexlify(hex_string)
    base64_bytes = base64.b64encode(bytes_object)
    return base64_bytes.decode('utf-8')
  except binascii.Error:
    print("Erreur : Chaîne hexadécimale invalide")
    return None
  except Exception as e:
    print(f"Erreur : {e}")
    return None

hex_string = "48656c6c6f20576f726c64"
base64_string = hex_to_base64_binascii(hex_string)
print(f"Hex : {hex_string}")
print(f"Base64 : {base64_string}")  # Output: SGVsbG8gV29ybGQ=

binascii.unhexlify() convertit la chaîne hexadécimale en octets, ensuite encodée à l’aide de base64.b64encode(). La gestion spécifique des erreurs pour binascii.Error améliore la clarté.

Ces exemples présentent plusieurs approches pour la conversion hexadécimal-Base64 en Python. Choisissez la méthode qui convient le mieux à vos besoins et à votre style de codage. N’oubliez pas de mettre en œuvre une gestion appropriée des erreurs dans le code de production.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *