为什么我的 ctypes long 大小为 4 而不是使用 64 位 python 的大小 8?

Why is my ctypes long size 4 and not size 8 using 64 bit python?

我收到一个错误

的下游 Python int too large to convert to C long,这让我怀疑 ctypes long 不知何故太小了 - 大小为 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))

这是输出:

Python Platform Architecture:  64bit
Size of ctypes long:  4

一个long只保证至少是32位宽,所以在某些系统上,ctypes.c_long只有32位。特别是,我相信在 64 位 Windows 上,ctypes.c_long 只有 32 位宽。如果它 必须 为 64 位宽,请改用 ctypes.c_int64