En C, long es 64 bit en un sistema de 64 bits. ¿Esto se refleja en el módulo ctypes de Python?¿Es ctypes.c_long de 64 bits de Python en sistemas de 64 bits?
Respuesta
El tamaño de long
depends on the memory model. En Windows (LLP64) es de 32 bits, en UNIX (LP64) es de 64 bits.
Si necesita un entero de 64 bits, use c_int64
.
Si necesita un número entero de puntero, use c_void_p
("El valor se representa como entero").
Sí.
>>> ctypes.c_long(2**50)
c_long(1125899906842624)
>>> ctypes.c_long(2**64)
c_long(0)
>>> ctypes.c_long(2**63)
c_long(-9223372036854775808)
Supongo que está ejecutando esto desde un sistema operativo LP64, pero las otras respuestas en realidad me dijeron cuándo y por qué :) –
Actualmente no.
En un sistema Windows de 64 bits, largo es de 32 bits.
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)
>>>
Buen trabajo pisoteando mi suposición de que Windows-64x era de 64 bits. –
Si un long
C es de 64 bits (como es el LP64 y ILP64 sistemas, casi cualquier sistema de 64 bits que no sea Windows), entonces también lo es ctypes.c_long
. Si una C de largo no es de 64 bits (como en los sistemas LLP64 como Windows de 64 bits), tampoco lo es una ctypes.c_long
.
- 1. Ejecute AnyCPU como 32 bits en sistemas de 64 bits
- 2. Utilice un instalador de NSIS para instalar binarios de 32 bits en sistemas operativos de 32 bits y binarios de 64 bits en sistemas operativos de 64 bits.
- 3. En sistemas de 64 bits, ¿una columna de 32 bits ocupa menos espacio que uno de 64 bits?
- 4. Inno RegKeyExists de configuración en sistemas de 64 bits
- 5. Aplicaciones Java de 64 bits: ¿Se requiere un SO de 64 bits, un JRE de 64 bits y una Aplicación de 64 bits?
- 6. ¿Aplicación de 32 bits o de 64 bits en el sistema operativo de 64 bits?
- 7. 64 bits por división de 32 bits
- 8. Siempre es de 64 bits en las máquinas de 32 y 64 bits
- 9. ¿iPhone OS es de 64 bits o 32 bits?
- 10. 64 bits ODBC Excepción
- 11. Pregunta Quicktime de 64 bits
- 12. NCover en el sistema de 64 bits
- 13. Interoperabilidad de 32 y 64 bits en Windows de 64 bits
- 14. Importar archivos dll externos basados en sistemas operativos de 64 bits o 32 bits
- 15. Registros de 64 bits en ventanas de 32 bits
- 16. alineación uint32_t en 64 bits?
- 17. SendInput falla en 64 bits
- 18. app.config y máquinas de 64 bits
- 19. ¿Ventajas/inconvenientes de ejecutar JVM de 64 bits en un servidor Linux de 64 bits?
- 20. ¿Windows de 64 bits usa KERNEL64?
- 21. Eclipse 32 bits ejecutándose en 64 bits JVM
- 22. ¿Cómo compilar un programa C++ como de 64 bits en una máquina de 64 bits?
- 23. Mezcla de 32 bits y 64 bits P/Invoca
- 24. Creando extensiones C de Python de 64 bits en Windows
- 25. Compilación de 32 bits con llvm-gcc de 64 bits
- 26. Determinación de Windows de 64 bits frente a 32 bits
- 27. FindNextFile falla en Windows de 64 bits?
- 28. Agregar números de 64 bits con aritmética de 32 bits
- 29. ¿Es mejor instalar MySQL de 32 bits o 64 bits en mi Mac basada en Intel de 64 bits (usuario de Perl/Python)?
- 30. Qué comando usar para comprobar si python es de 64 bits o de 32 bits
Oh wow, enlace fantástico, nunca supe que el modelo de memoria se formalizó. –