В C, долго 64, обдумал систему на 64 бита. Это отражается в ctypes модуле Python?
Размер long
зависит от модели памяти . В Windows (LLP64) он 32-битный, в UNIX (LP64) - 64-битный.
Если вам нужно 64-битное целое число, используйте c_int64
.
Если вам нужно целое число размером с указатель, используйте c_void_p
(«Значение представлено как целое число»).
Да.
>>> ctypes.c_long(2**50)
c_long(1125899906842624)
>>> ctypes.c_long(2**64)
c_long(0)
>>> ctypes.c_long(2**63)
c_long(-9223372036854775808)
Собственно нет.
В 64-битной системе Windows long составляет 32 бита.
Python 3.1.2 (r312:79149, Mar 20 2010, 22:55:39) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> ctypes.c_long(2**31)
c_long(-2147483648)
>>> ctypes.c_long(2**31+1)
c_long(-2147483647)
>>> ctypes.c_long(2**31-1)
c_long(2147483647)
>>>
Если C long
является 64-битным (например, в системах LP64 и ILP64, практически в любой 64-битной системе, кроме Windows), то ctypes.c_long
]. Если C long не является 64-битным (например, в системах LLP64, таких как 64-битная Windows), то ctypes.c_long
тоже не является.