永发信息网

关于python ctypes里 Union的问题

答案:2  悬赏:70  手机版
解决时间 2021-01-27 21:16
  • 提问者网友:活着好累
  • 2021-01-26 23:15
很冒昧的打扰,希望不要很唐突~
问题是这样的,我需要定义一个数据类型的结构体,python代码如下:
class UNIOn(Union):
_fields_ = [('bitVal', c_ubyte),
('i1Val', c_int8),
('i2Val', c_int16),
('i4Val', c_int32),
('ui1Val', c_uint8),
('ui2Val', c_uint16),
('ui4Val', c_uint32)]
DataValue(Structure):
_anonymous_ = ('DataValue',)

_fields_=[('DataType',c_uint16),('DataValue',UNIOn)]

data_value = DataValue()
data_value.DataType = 4 #4是int32类型的
data_value.DataValue = 23

但是这样传到dll中的数据一直不对,能不能帮忙看看问题在哪了~
多谢!
最佳答案
  • 五星知识达人网友:深街酒徒
  • 2021-01-27 00:49
DataValue(Structure):
_anonymous_ = ('DataValue',)
可能是写错了,改成:
class DataValue(Structure):
_anonymous_ = ('DataValue',)

data_value.DataValue = 23
这句报错吗?
换成:
data_value.i4Val = 32
试试

如果有问题,希望你把错误的原因(traceback)贴出来
全部回答
  • 1楼网友:掌灯师
  • 2021-01-27 02:27
亲!缩进呢! 这真心不好猜啊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯