将C样式long转换为Python样式integ

2024-05-20 15:46:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我将VS2015与Python3.5结合使用。我有一个C程序提供的结构。这座建筑有很多洞。我想把这些C风格的long转换成Python整数。你知道吗

我的C数据如下所示:

class _C_vendrRecord(Structure):
    _pack_ = 1         # pack the struct
    _fields_ = [
    ("currentBalance",             c_ulong * (1)),
    ]
C_vendrRecord = _C_vendrRecord() # used to reference the C formatted data

我想这样说:

currentBalance = C_vendrRecord.currentBalance

我做了大量的搜索,但没有任何效果。我的尝试如下:

currentBalance = C_vendrRecord.currentBalance
print(currentBalance)
<vendr.c_ulong_Array_1 object at 0x016AD710>

currentBalance = C_vendrRecord.currentBalance.value
print(currentBalance)
AttributeError: 'c_ulong_Array_1' object has no attribute 'value'

而且,因为我看到一篇关于类似问题的帖子,我试着这样做:

currentBalance = ctypes.c_long(1).value # in the post
print(currentBalance)
1

currentBalance = ctypes.c_long(C_vendrRecord.currentBalance).value
print(currentBalance)
TypeError was unhandled by user code
Message: an integer is required (got type c_ulong_Array_1)

Tags: the程序objectvaluectypes结构arraypack
1条回答
网友
1楼 · 发布于 2024-05-20 15:46:23

问题是您指定了一个单元素数组,但却像访问标量一样访问了它。只需向它添加[0],例如currentBalance = C_vendrRecord.currentBalance[0],它就会工作。你知道吗

相关问题 更多 >