Python:二进制/十六进制字符串转换?

14 python binary hex

我有一个包含二进制和字符串字符的字符串,我想先将其转换为二进制,然后再转换为十六进制.

字符串如下:

<81>^Q<81>"^Q^@^[)^G ^Q^A^S^A^V^@<83>^Cd<80><99>}^@N^@^@^A^@^@^@^@^@^@^@j
Run Code Online (Sandbox Code Playgroud)

如何在Python中转换此字符串,以便十六进制格式的输出类似于下面的内容?

24208040901811001B12050809081223431235113245422F0A23000000000000000000001F
Run Code Online (Sandbox Code Playgroud)

Fer*_*ran 24

您可以像这样使用ord和hex:

>>> s = 'some string'
>>> hex_chars = map(hex,map(ord,s))
>>> print hex_chars
['0x73', '0x6f', '0x6d', '0x65', '0x20', '0x73', '0x74', '0x72', '0x69', '0x6e', '0x67']
>>> hex_string = "".join(c[2:4] for c in hex_chars)
>>> print hex_string
736f6d6520737472696e67
>>>
Run Code Online (Sandbox Code Playgroud)

或者使用内置编码:

>>> s = 'some string'
>>> print s.encode('hex_codec')
736f6d6520737472696e67
>>>
Run Code Online (Sandbox Code Playgroud)

  • 使用`hex`和`ord`的版本无法可靠地运行.使用"%2.2x".__ mod__而不是hex,你也可以避免使用`c [2:4]`.结果它看起来像:`"".join(map("%2.2x".__ mod__,map(ord,s)))`.编码版本当然更好.:-) (2认同)

Pyt*_*nia 10

>>> import binascii

>>> s = '2F'

>>> hex_str = binascii.b2a_hex(s)

>>> hex_str

>>> '3246'
Run Code Online (Sandbox Code Playgroud)

要么

>>>import binascii

>>> hex_str = binascii.hexlify(s)

>>> hex_str
>>> '3246'
>>>
Run Code Online (Sandbox Code Playgroud)