获取结构大小的混乱

  • 本文关键字:混乱 结构 获取 python
  • 更新时间 :
  • 英文 :


如何获取结构的大小?我用过sys.getsizeof()但它没有给出所需的输出。

让我们考虑以下代码:

#using bit fields for storing variables
from ctypes import *
def MALE():
    return 0
def FEMALE():
    return 1
def SINGLE():
    return 0
def MARRIED():
    return 1
def DIVORCED():
    return 2
def WIDOWED():
    return 3
class employee(Structure):
    _fields_= [("gender",c_short, 1),                            #1 bit size for storage
               ("mar_stat", c_short, 2),                         #2 bit size for storage
               ("hobby",c_short, 3),                             #3 bit size for storage
               ("scheme",c_short, 4)]                            #4 bit size for storage
e=employee()
e.gender=MALE()
e.mar_status=DIVORCED()
e.hobby=5
e.scheme=9
print "Gender=%dn" % (e.gender)
print "Marital status=%dn" % (e.mar_status)
import sys
print "Bytes occupied by e=%dn" % (sys.getsizeof(e))

输出:

Gender=0
Marital status=2
Bytes occupied by e=80

我要Bytes occupies by e=2

有什么解决方案吗?

ctypes.sizeofsys.getsizeof是不一样的。前者给出 c 结构的大小,后者给出 python 对象包装器的大小。

不能将 C structctypes.Structure对象进行比较。最后一个是 Python 对象,它包含的信息比它的配套 c struct 要多得多。

最新更新