【发布时间】:2021-07-23 01:26:44
【问题描述】:
我正在使用 python 3.6 - 我正在尝试使用 struct 库来打包要使用 UDP 发送到自定义协议的小端数据包。
如果我们执行len(struct.pack('<hhislddiii',1,2,3,b'C',1,2,3,4,5,6)),那么我们会得到 41,这是正确的字节长度。但是,如果我们做struct.pack('<hhislddiii',1,2,3,b'C',1,2,3,4,5,6).__sizeof__(),我们会得到 58。有人可以解释一下这两者有什么区别吗?我正在尝试使用 scapy 作为 UDP 数据包来制作数据包,因此获得正确的数据包格式至关重要。想了解其中的区别。
【问题讨论】:
-
sizeof是 Python 内部数据结构的大小。它包括诸如对象类型和引用计数等信息。它与您正在设置的数据中的字节数只有有限的关系,并且通常会更大;有时更小,例如,一个列表,它存储对列表元素的引用,而不是数据。sizeof主要在您拥有庞大的数据结构并且内存不足时很有用。 -
谢谢!是的,我现在明白了。
标签: python data-structures struct sizeof