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

时间:2017-06-29 17:04:05

标签: python arrays numpy decode

我有一个hexa字符串,我想将其转换为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'

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

重点是Pyhon中的二进制字符串表示 ASCII等效

相当于'\x20'是一个空格,正如ASCII table中所见:

Hex  Dec  ASCII
 20   32    (space)

如果您在终端中写'\x20',它将打印一个空格:

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

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