为什么我的ctypes长度为4而不是使用64位python的8号?

use*_*339 2 python ctypes anaconda

在这个下游,我得到一个错误Python int too large to convert to C long,这让我怀疑,不知何故ctypes长度太小 - 大小4而不是8.

我对此进行了测试,确实如此.然而,我使用的是Python 2.7 64位(Anaconda).

import ctypes as C
import os
import platform
import numpy as np

print "Python Platform Architecture: ", platform.architecture()[0]
print "Size of ctypes long: ", (C.sizeof(C.c_long))
Run Code Online (Sandbox Code Playgroud)

这是输出:

Python Platform Architecture:  64bit
Size of ctypes long:  4
Run Code Online (Sandbox Code Playgroud)

mip*_*adi 6

A long仅保证至少32位宽,因此在某些系统上,ctypes.c_long只有32位.特别是,我相信64位Windows,ctypes.c_long只有32位宽.如果它必须是64位宽,请ctypes.c_int64改为使用.