1

我最近开始学习Python并且有很多困惑,

我有两个输入bytearrays

x = bytearray(b'\xac\xe0\x1f\x15n\x99\xf1\xce\xba\xba\x8d\x9a\xda-JG')
y = bytearray(b'\x9d\x93\xcd\x0f(\xa8\xd6\xa9\xea\x10\x8d_\xbd7\xc6Y')

当我打印它们时,

print(x)
print(y)

它提供完全相同的输出。

我现在想要zip这两个变量,xy

由于我们使用在 Python 3list中查看的内容,zip

我使用了以下代码,

print( list(zip(x,y)) )

这是输出,

[(172, 157), (224, 147), (31, 205), (21, 15), (110, 40), (153, 168), (241, 214),
 (206, 169), (186, 234), (186, 16), (141, 141), (154, 95), (218, 189), (45, 55),
 (74, 198), (71, 89)]

我不明白为什么将其转换为十进制值?

4

1 回答 1

3

它不是“转换为十进制值”。Abytearray是字节列表。字节是数字。数字可以用任何基数表示,而不会改变它们的值。所以数字保持不变;只有他们的表现会发生变化。这样做的原因是bytearray它以十六进制表示其内容,而tuple包含单个ints,它们具有默认的十进制表示。这仅在打印时适用;例如,以下内容已经是正确的。

assert x[0] == 172

zip换句话说,在数字通过 之后,它们不再是 a 的一部分, bytearrayPython 不再有任何方法知道它应该以十六进制打印它们。

于 2013-10-09T19:22:45.807 回答