Saltar al contenido

Conversión hexadecimal a Base64 en Python

Te sugerimos que pruebes esta solución en un ambiente controlado antes de pasarlo a producción, un saludo.

Solución:

Editar 26 ago 2020: Como sugiere Ali en los comentarios, usando codecs.encode(b, "base64") daría como resultado saltos de línea adicionales para la sintaxis MIME. Solo use este método si desea dar formato a esos saltos de línea.

Para una codificación/descodificación Base64 simple, use base64.b64encode y base64.b64decode. Vea la respuesta de Ali para más detalles.


En Python 3, las codificaciones arbitrarias, incluidas Hex y Base64, se han movido a codecs módulo. Para obtener un Base64 str de un maleficio str:

import codecs

hex = "10000000000002ae"
b64 = codecs.encode(codecs.decode(hex, 'hex'), 'base64').decode()

Python 2 tiene soporte nativo para la codificación HEX y base64:

encoded = HEX_STRING.decode("hex").encode("base64")

(si está utilizando Python 3, consulte las respuestas de Eana Hufwe o Ali)

La herramienta a la que se vincula simplemente interpreta el hexadecimal como bytes y luego codifica esos bytes en Base64.

O usa el binascii.unhexlify() función para convertir de un hexadecimal string a bytes, o utilice el bytes.fromhex() método de clase. Luego usa el binascii.b2a_base64() función para convertir eso a Base64:

from binascii import unhexlify, b2a_base64

result = b2a_base64(unhexlify(hex_string))

o

from binascii import b2a_base64

result = b2a_base64(bytes.fromhex(hex_string))

En Python 2, también puede usar el str.decode() y str.encode() métodos para lograr lo mismo:

result = hex_string.decode('hex').encode('base64')

En Python 3, tendrías que usar el codecs.encode() función para esto.

Demostración en Python 3:

>>> bytes.fromhex('10000000000002ae')
b'x10x00x00x00x00x00x02xae'
>>> from binascii import unhexlify, b2a_base64
>>> unhexlify('10000000000002ae')
b'x10x00x00x00x00x00x02xae'
>>> b2a_base64(bytes.fromhex('10000000000002ae'))
b'EAAAAAAAAq4=n'
>>> b2a_base64(unhexlify('10000000000002ae'))
b'EAAAAAAAAq4=n'

Demostración en Python 2.7:

>>> '10000000000002ae'.decode('hex')
'x10x00x00x00x00x00x02xae'
>>> '10000000000002ae'.decode('hex').encode('base64')
'EAAAAAAAAq4=n'
>>> from binascii import unhexlify, b2a_base64
>>> unhexlify('10000000000002ae')
'x10x00x00x00x00x00x02xae'
>>> b2a_base64(unhexlify('10000000000002ae'))
'EAAAAAAAAq4=n'

Calificaciones y comentarios

Si conservas alguna vacilación o forma de acrecentar nuestro enunciado eres capaz de añadir una observación y con placer lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *