Python:如何将包含十六进制字节的字符串转换为十六进制字符串

标签 python string hex

我认为 binascii 是我正在寻找的模块,但我似乎无法获得我正在寻找的确切结果。

这是我想做的。我要转换:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> print len(s)
40

>>> hs = '\x35\x6a\x19\x2b\x79\x13\xb0\x4c\x54\x57\x4d\x18\xc2\x8d\x46\xe6\x39\x54\x28\xab'
>>> print len(hs)
20

任何 Pythonista 知道一个很酷的(或者,坦率地说,实用的)方法来做到这一点?

最佳答案

所有版本的Python中,您可以使用函数 binascii.a2b_hex() (也称为 binascii.unhexlify() ):

>>> import binascii
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> binascii.a2b_hex(s)
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'

Python 3.x 中,您可以使用 bytes.fromhex(s) .

Python 2.x 中,您可以使用 hex str-to-str 编解码器:

>>> s.decode("hex")
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'

编解码器内部调用 binascii.a2b_hex()

关于Python:如何将包含十六进制字节的字符串转换为十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10824319/

相关文章:

c++ - C++宏中的字符串修改

c# - 从 C# 中的字符串中删除最后一个字符。一种优雅的方式?

R sprintf dec2hex错误

windows - 最小化字符数的简单数字到数字(或数字到十六进制)加密算法

python - 如果我是 Python 新手,我应该使用哪个版本的 Python?

python - 如何根据特定条件从 pandas 数据框中删除行

c++ - 检查字符是否在字符串中至少出现 N 次。算法中的任何解决方案?

powershell - 将Format-Hex PowerShell表转换为原始十六进制转储

python - 合并 2 个 Pandas DataFrame,如果索引匹配,则将一条记录替换为另一条记录

python - 使用 send_mail() [Python - Django] 发送的邮件不发送嵌入图像