Rea*_*oob 10 python base64 hex
我想将一个简单的HEX字符串(例如10000000000002ae)转换为Base 64.
十六进制字符串将转换为字节,然后将字节编码为base64表示法,因此该字符串的预期输出:EAAAAAAAAq4 =
我在网上找到了一个工具.http://tomeko.net/online_tools/hex_to_base64.php?lang=en
但是我需要在脚本中转换一堆HEX值.
Ean*_*fwe 23
在Python 3中,包括Hex和Base64在内的任意编码已移至codecs模块.str从十六进制获取Base64 str:
import codecs
hex = "10000000000002ae"
b64 = codecs.encode(codecs.decode(hex, 'hex'), 'base64').decode()
Run Code Online (Sandbox Code Playgroud)
ppp*_*ery 13
Python本身支持HEX和base64编码:
encoded = HEX_STRING.decode("hex").encode("base64")
Run Code Online (Sandbox Code Playgroud)
Ali*_*Ali 13
from base64 import b64encode, b64decode
# hex -> base64
s = 'cafebabe'
b64 = b64encode(bytes.fromhex(s)).decode()
print('cafebabe in base64:', b64)
# base64 -> hex
s2 = b64decode(b64.encode()).hex()
print('yv66vg== in hex is:', s2)
assert s == s2
Run Code Online (Sandbox Code Playgroud)
这打印:
在 base64 中的 cafebabe:yv66vg== yv66vg== 十六进制是:cafebabe
文档中的相关函数,hex to base64:
Base64 到十六进制:
我不明白为什么许多其他答案使它变得如此复杂。例如,截至 2020 年 8 月 26 日投票最多的答案:
codecs模块。codecs模块base64.encodebytes(s)在幕后使用(请参阅此处的参考),因此它转换为多行 MIME base64,因此每 76 个字节的输出后您会得到一个新行。除非您通过电子邮件发送它,否则它很可能不是您想要的。至于'utf-8'在编码字符串或解码字节时指定:它会增加不必要的噪音。默认情况下,Python 3 对字符串使用 utf-8 编码。标准库的作者将编码/解码方法的默认编码也设为 utf-8,这并非巧合,这样您就不必一遍又一遍地不必要地指定 utf-8 编码。
Mar*_*ers 10
您链接的工具只是将十六进制解释为字节,然后将这些字节编码为Base64.
使用binascii.unhexlify()函数将十六进制字符串转换为字节,或使用bytes.fromhex()类方法.然后使用该binascii.b2a_base64()函数将其转换为Base64:
from binascii import unhexlify, b2a_base64
result = b2a_base64(unhexlify(hex_string))
Run Code Online (Sandbox Code Playgroud)
要么
from binascii import b2a_base64
result = b2a_base64(bytes.fromhex(hex_string))
Run Code Online (Sandbox Code Playgroud)
在Python 2中,您还可以使用str.decode()和str.encode()方法来实现相同的目的:
result = hex_string.decode('hex').encode('base64')
Run Code Online (Sandbox Code Playgroud)
在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'
Run Code Online (Sandbox Code Playgroud)
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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34426 次 |
| 最近记录: |