Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么不';这不是因为;“包装”;是否等于手动创建的字节数组?_Python_Python 3.x - Fatal编程技术网

Python 为什么不';这不是因为;“包装”;是否等于手动创建的字节数组?

Python 为什么不';这不是因为;“包装”;是否等于手动创建的字节数组?,python,python-3.x,Python,Python 3.x,我有这个: >>> a1 = pack('>L', 18) >>> a1 b'\x00\x00\x00\x12' 以及: 为什么他们不平等 >>> a1 == a2 False 因为如果想要相等,必须在a中转换第二个变量a2,a1是一个整数列表,a2是一个字节字符串,因此除非转换a2,否则它们永远不会相等,例如: import struct import array a1 = struct.pack('>L', 18) pr

我有这个:

>>> a1 = pack('>L', 18)
>>> a1
b'\x00\x00\x00\x12'
以及:

为什么他们不平等

>>> a1 == a2
False

因为如果想要相等,必须在a中转换第二个变量
a2
a1
是一个
整数列表
a2
是一个
字节字符串
,因此除非转换
a2
,否则它们永远不会相等,例如:

import struct
import array

a1 = struct.pack('>L', 18)
print(a1)
$b'\x00\x00\x00\x12'

a2 = [int(0x0), int(0x0), int(0x0), int(0x12)]
print(a2)
$[0, 0, 0, 18] #this is a list

print(a1 == a2)
$False

a3 = array.array('B',a2).tostring() #transform the list into byte
print(a3)
$b'\x00\x00\x00\x12' 

print(a1 == a3)
$True

pack('>L',18)
返回一个字节对象,
a2
是一个列表

列表和字节字符串不是等价的类型,即使它们相似。要将列表转换为字节字符串,可以使用以下方法,具体取决于您使用的是Python 2还是Python 3

Python 2:

>>> ''.join(chr(c) for c in a2)
'\x00\x00\x00\x12'
Python 3:

>>> bytes(a2)
b'\x00\x00\x00\x12'

什么是字节对象?什么是字节字符串?真实世界的例子是什么?字节字符串是否存在于其他编程语言中?
#将列表转换为字节
-->这里的字节是什么?@Ko32mo b'\x00\x00\x00\x12'这是一个字节字符串,请参阅本文@Ko32mo不要忘记,如果答案有用,接受(只有一个)答案(通过单击答案左上角的复选框)是一种很好的做法:),如果你找到了答案,也别忘了投票useful@Ko32mo如果你觉得有点失落,也可以查看这个链接
>>> bytes(a2)
b'\x00\x00\x00\x12'