以下the manual about struct.calcsize
truct.calcsize(fmt)¶
Return the size of the struct (and hence of the string) corresponding to the given format
但我不明白为什么struct.calcsize('hll')不是struct.calcsize('h')加上struct.calcsize('l')的两倍。见下文。有什么想法吗
In [216]: struct.calcsize('hll')
Out[216]: 24
In [217]: struct.calcsize('h')
Out[217]: 2
In [218]: struct.calcsize('l')
Out[218]: 8
为了提高效率,我假设这是因为填充了比机器字短的元素
访问机器字长度倍数的内存地址(例如,64位机器的8字节)往往更快。因此,除非另有说明,否则C编译器将填充其结构。
struct
模块将对互操作性执行相同的操作不过,它看起来是可配置的,这取决于您计划如何使用它
但奇怪的是,如果我们改变元素的顺序,我们会得到不同的结果,例如:
考虑到@Vlad所说的,它不应该都是同样大小的吗
但是,是的,这似乎与性能的一致性有关,并检查此示例:
我们可以看到,通过在短(h)旁边加上long,基本上将短转换为长
但这相当令人困惑,因为理论上,我们应该能够做到以下几点:
但实际上我们不能,python抛出了一个错误:
相关问题 更多 >
编程相关推荐