我最近开始学习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
这两个变量,x
和y
。
由于我们使用list
来查看Python 3中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)]
我不明白为什么它被转换为十进制值?
答案 0 :(得分:3)
它不是“转换为十进制值”。 bytearray
是一个字节列表。字节是数字。数字可以在任何基础上表示而不会改变它们的值。所以数字保持不变;只有他们的代表变化。原因是bytearray
以十六进制表示其内容,而tuple
包含单个int
s,其具有默认的十进制表示。这仅适用于打印时;例如,以下内容已经为真。
assert x[0] == 172
数字通过zip
之后,换句话说,它们不再是bytearray
的一部分,Python不再有任何方法可以知道它应该以十六进制打印。