ctypes.c_long 64 Python, обдумал системы на 64 бита?

В C, долго 64, обдумал систему на 64 бита. Это отражается в ctypes модуле Python?

7
задан Matt Joiner 24 July 2010 в 04:09
поделиться

4 ответа

Размер long зависит от модели памяти . В Windows (LLP64) он 32-битный, в UNIX (LP64) - 64-битный.

Если вам нужно 64-битное целое число, используйте c_int64 .

Если вам нужно целое число размером с указатель, используйте c_void_p («Значение представлено как целое число»).

10
ответ дан 6 December 2019 в 11:45
поделиться

Да.

>>> ctypes.c_long(2**50)
c_long(1125899906842624)
>>> ctypes.c_long(2**64)
c_long(0)
>>> ctypes.c_long(2**63)
c_long(-9223372036854775808)
1
ответ дан 6 December 2019 в 11:45
поделиться

Собственно нет.

В 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)
>>>

См. Каков разрядный размер long в 64-битной Windows?

4
ответ дан 6 December 2019 в 11:45
поделиться

Если C long является 64-битным (например, в системах LP64 и ILP64, практически в любой 64-битной системе, кроме Windows), то ctypes.c_long ]. Если C long не является 64-битным (например, в системах LLP64, таких как 64-битная Windows), то ctypes.c_long тоже не является.

2
ответ дан 6 December 2019 в 11:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: