如何在Python中将十六进制转换为ascii十六进制字符串?

时间:2014-09-22 05:06:24

标签: python c++ string hex

嗨我正在学习pySerial模块,所以hex到ascii是它的基础。

到目前为止,我有以下概念。

字节字符串:“\ xde”

字节数组:

>>> bytearray('\xde')
bytearray(b'\xde')
>>> a = bytearray('\xde')
>>> a[0]
222
>>> hex(a[0])
'0xde'

十六进制字符串:'\ xde'

十六进制:0xde

正常表示:de

现在我需要的是Hex String to Hex,反之亦然。

Hex或Hex String to Normal表示。

我希望我能得到最简单的答案。

更新

我认为除了字符串操作之外我得到了一个初始答案。 但这看起来很脏。

>>> hex(int(binascii.hexlify('\xde'),16))
'0xde'

1 个答案:

答案 0 :(得分:1)

让我重新写一点。

你有一个字节(比如b,整数值为222(十进制)或de(十六进制)或二进制为276或二进制为10111110.

其十六进制字符串表示形式为'0xde'

以下初步说明是相同的:

b = 222
b = 0xde

以下是转换(例如s是字符串,s='0xde',即十六进制字符串表示形式)

s = hex(b)
b = int(s, 16)

根据评论编辑:

如果确实希望能够接受输入\xde以及0xde,您可以这样做:

b = int('0' + s[1:] if (s[0] == '\\') else s, 16)

或直接

b = int('0' + s[1:], 16)

如果你确定你永远不会得到奇怪的输入