Python解码十六进制字符串上的意外行为

Python解码十六进制字符串上的意外行为,python,arrays,numpy,decode,Python,Arrays,Numpy,Decode,我有一个十六进制字符串,我想把它转换成int的numpy数组 我不想使用for循环,因为不建议通过numpy数组进行循环 因此,我做了以下工作: vector=np.fromstring s.decode'hex',dtype=np.uint8 例如,如果s='a312',s.decode'hex'返回'\xa3\x12',这是正确的 但是如果s='a320',s.decode'hex'返回'\xa3',第一眼看上去有点奇怪,因为我期望'\xa3\x20' 你能帮我个忙吗?关键是Pyhon中的二

我有一个十六进制字符串,我想把它转换成int的numpy数组

我不想使用for循环,因为不建议通过numpy数组进行循环

因此,我做了以下工作:

vector=np.fromstring s.decode'hex',dtype=np.uint8

例如,如果s='a312',s.decode'hex'返回'\xa3\x12',这是正确的

但是如果s='a320',s.decode'hex'返回'\xa3',第一眼看上去有点奇怪,因为我期望'\xa3\x20'


你能帮我个忙吗?

关键是Pyhon中的二进制字符串表示为其ASCII等价物

“\x20”的等价物是一个空格,如图所示:

如果在终端中写入“\x20”,它将打印一个空格:

>>> '\x20'
' '
>>> 'a320'.decode('hex') == '\xa3\x20'
True

请注意,这只是表示的一个方面:在窗帘后面,二进制字符串包含0010 0000二进制值。

好的,我明白了。我想也许这不是我需要的。如何从s='a320'中获取'\xa3\x20'?@SebMa:你仔细阅读了答案吗?您将获得\xa3\x20。这完全是一个字符串如何表示的问题。你是对的,这是一天的结束,我开始感到累了。decode最终完成了我想要的,我得到了期望的整数值:np.fromstring'\xa3',dtype=np.uint8[1]对于python3,s.decode'hex'不起作用:AttributeError:'str'对象没有属性'decode',如何使代码在python2和python3中都起作用?@SebMa:Python-3.x中确实没有解码。你可以用它。此外,Python-2.x和Python-3.x实际上是两种不同的语言。从理论上讲,制作一个同时适用于两者的程序是可能的,但非常困难,因为例如map、zip等都有不同的行为。
>>> '\x20'
' '
>>> 'a320'.decode('hex') == '\xa3\x20'
True