2017-01-24 21 views
0

我知道array.tostring给出了机器值的数组。但我试图弄清楚他们是如何表现的。Python array.tostring - 字节表示的解释

e.g

>>> a = array('l', [2]) 
>>> a.tostring() 
'\x02\x00\x00\x00' 

在这里,我知道,“L”是指每个指数将是4个字节分钟,这就是为什么我们在的toString表示4个字节。但为什么最高位填充\x02。不应该是'\x00\x00\x00\x02'?

>>> a = array('l', [50,3]) 
>>> a.tostring() 
'2\x00\x00\x00\x03\x00\x00\x00' 

在这里,我猜2在一开始是因为50是2的ASCII值,那么我们为什么不有3 ASCII值对应的字符是按Ctrl-C

回答

1

但为什么最高位填充了\x02。不应该是'\x00\x00\x00\x02'

\x02'\x02\x00\x00\x00'不是最重要的字节。我想你很困惑,试图把它看作是一个十六进制数字,其中最重要的数字在左边。这不是array.tostring()返回的array的字符串表示如何工作。表示值的字节按照从最低有效到最高有效的顺序从左到右放在一起。只要将数组视为一个字节列表,第一个(或者说,第0个)字节在左边,就像通常的Python列表中一样。

为什么我们没有相应的char值为3的ASCII值为Ctrl-C?

你有地方蟒蛇代表背后按Ctrl-C的字符作为Ctrl-C或任何类似的例子吗?由于ASCII代码3对应于不可打印的字符,并且它没有相应的转义序列,因此它通过其十六进制代码表示。