2017-06-29 88 views
0

我有一个hexa字符串,我想要转换为int的numpy数组。Python解码十六进制字符串上的意外行为

我不想使用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

问题是Pyhon中的一个二进制字符串是,它代表,因为它的等同于ASCII码

相当于'\x20'是一个空间,作为一个可以在ASCII table看到:

Hex Dec ASCII 
20 32 (space) 

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

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

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

+0

好吧,我明白了。我猜可能'decode'不是我所需要的。 如何从s ='a320'获得''\ xa3 \ x20''? – SebMa

+0

@SebMa:你仔细阅读了答案吗?你会得到'\ xa3 \ x20'。这是一个**字符串如何表示**的问题。 –

+0

你是对的,这是一天结束,我开始厌倦。 'decode()'做了我想要的结果,我得到了预期的整数值:'np.fromstring('\ xa3',dtype = np.uint8)[ – SebMa

相关问题