2017-05-12 3 views
3

私はPythonとPythonの​​に取り組んでいます。Pythonのunsigned interのポインタ

私はctypes.c_uint32に与えられた数値を変換してから、次のようにそのポインタを参照したい:

d = 0 
d_c_unit32 = (ctypes.c_uint32 * 1)(d) 
pd_c = ctypes.POINTER(d_c_unit32) 

が、私が言うエラーがあります:

Detail TypeError: must be a ctypes type

はあなたが私に教えてくださいだろうが問題はどこだ?

答えて

3
d = 0 
num = ctypes.c_uint32(d) 
ptr = ctypes.pointer(num) 
print 'pointer:', ptr 
print 'value:', ptr[0] 

出力は:

pointer: <__main__.LP_c_uint object at 0x7f4551c27680> 
value: 0 
+3

それは '' PTR = int_pointer(NUM) ''またはPTR = ctypes.pointer(NUM)であるべきです。アドレスをキャストするのは2つの理由から間違っています。ポインタの '_objects'でサポートオブジェクトを参照しません。 'ctypes.cast'がFFI呼び出しとして実装されているため、比較的高価です。 – eryksun

関連する問題