2016-01-20 99 views
1

我在Python 3.5中使用VS2015。我有一個由C程序提供的結構。該結構具有c_ulongs。我想將這些C風格的長整型轉換爲Python整型。將C風格轉換爲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) 

回答

0

問題是你指定了一個元素的數組,但是訪問過它就好像它是一個標量。只需在其中添加[0],例如currentBalance = C_vendrRecord.currentBalance[0]它會工作。