请考虑以下事项:
le = ctypes.c_uint32.__ctype_le__
be = ctypes.c_uint16.__ctype_be__
如何编写一个行为符合您期望的函数is_bigendian(cls)
:
>>> is_bigendian(le)
False
>>> is_bigendian(be)
True
ctypes
是否会在某处公开此信息?
答案 0 :(得分:1)
似乎唯一可行的方法是:
if ctypes.c_uint8.__ctype_be__.__name__.endswith('_be'):
def is_bigendian(cls):
return cls.__name__.endswith('_be')
elif ctypes.c_uint8.__ctype_le__.__name__.endswith('_le'):
def is_bigendian(cls):
return not cls.__name__.endswith('_le')
else:
raise RuntimeError
很难发现,因为repr(ctypes.c_uint8.__ctype_be__)
没有正确显示班级名称。