我想将一个简单的HEX字符串(例如10000000000002ae)转换为Base 64。
十六进制字符串将转换为字节,然后将字节编码为base64表示法,因此该字符串的预期输出:EAAAAAAAAq4 =
我在网上找到了一个工具。 http://tomeko.net/online_tools/hex_to_base64.php?lang=en
但是我需要在脚本中转换一堆HEX值。
Python本身支持HEX和base64编码:
encoded = HEX_STRING.decode("hex").encode("base64")
在Python 3中,包括Hex和Base64在内的任意编码已移至codecs
模块。从hex str
获得Base64 str
:
import codecs
hex = "10000000000002ae"
b64 = codecs.encode(codecs.decode(hex, 'hex'), 'base64').decode()
您链接的工具只是将十六进制解释为字节,然后将这些字节编码为Base64。
使用binascii.unhexlify()
function将十六进制字符串转换为字节,或使用bytes.fromhex()
class method。然后使用binascii.b2a_base64()
function将其转换为Base64:
from binascii import unhexlify, b2a_base64
result = b2a_base64(unhexlify(hex_string))
要么
from binascii import b2a_base64
result = b2a_base64(bytes.fromhex(hex_string))
在Python 2中,您还可以使用str.decode()
和str.encode()
方法来实现相同的目标:
result = hex_string.decode('hex').encode('base64')
在Python 3中,您必须使用codecs.encode()
函数。
Python 3中的演示:
>>> bytes.fromhex('10000000000002ae')
b'\x10\x00\x00\x00\x00\x00\x02\xae'
>>> from binascii import unhexlify, b2a_base64
>>> unhexlify('10000000000002ae')
b'\x10\x00\x00\x00\x00\x00\x02\xae'
>>> b2a_base64(bytes.fromhex('10000000000002ae'))
b'EAAAAAAAAq4=\n'
>>> b2a_base64(unhexlify('10000000000002ae'))
b'EAAAAAAAAq4=\n'
Python 2.7上的演示:
>>> '10000000000002ae'.decode('hex')
'\x10\x00\x00\x00\x00\x00\x02\xae'
>>> '10000000000002ae'.decode('hex').encode('base64')
'EAAAAAAAAq4=\n'
>>> from binascii import unhexlify, b2a_base64
>>> unhexlify('10000000000002ae')
'\x10\x00\x00\x00\x00\x00\x02\xae'
>>> b2a_base64(unhexlify('10000000000002ae'))
'EAAAAAAAAq4=\n'
Python本身支持HEX和base64编码:
import base64
def main():
b16 = bytearray('10000000000002ae'.decode('hex'))
b64 = base64.b64encode(b16)
print b64
如果有人正在寻找python one-liner(bash):
python -c "import codecs as c; print(c.encode(c.decode('10000000000002ae', 'hex'), 'base64').decode())"
在python3中,您可以使用bytes.fromhex
到字节,使用base64包将字节转换为base64
hex_str = '01'
encoded_str = base64.b64encode(bytes.fromhex(hex_str)).decode('utf-8')
decoded_str = base64.b64decode(encoded_str.encode('utf-8')).hex()