不久前,有人告诉我long在64位机器上不是64位,我应该总是使用int.这对我来说没有意义.我已经看到docs(例如Apple官方网站上的文件)说long在编译64位CPU时确实是64位.我查了64位Windows上的内容并找到了
- Windows:
long并int保持32位长度,并为64位整数定义特殊的新数据类型.
(来自http://www.intel.com/cd/ids/developer/asmo-na/eng/197664.htm?page=2)
我该怎么用?我应该定义类似uw,sw((UN)签署的宽度)为long如果没有在Windows,否则做对目标CPU bitsize支票?
在这个下游,我得到一个错误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)