Проверка точности типов ctypes в Python - PullRequest
7 голосов
/ 03 июня 2011
  1. Если API ожидает 64-битный тип, как я могу проверить, что тип ctypes имеет столько бит, если sizeof возвращает количество байтов?
  2. Как узнать, сколько битов в каждом байте на текущей платформе?
  3. Где CHAR_BIT определен в Python?

1 Ответ

6 голосов
/ 03 июня 2011

Сигнатуры функций C / C ++ пишутся с типами C / C ++, такими как «int», «double» или «uint32_t».Все они имеют соответствующие эквиваленты ctypes, поэтому, как правило, вас не волнует количество бит.

При этом ...

import os
print os.sysconf('SC_CHAR_BIT')

... примерно так близко, как выполучить, я думаю.Не работает на не-Unix платформах.И, как указывает tMC в комментариях, он работает даже не на всех платформах Unix;Я считаю, что это расширение GNU.

[обновление]

На самом деле, спецификация POSIX , кажется, требует CHAR_BIT == 8. Так что в любой системе, которая поддерживает SC_CHAR_BITСелектор sysconf, он вам на самом деле не нужен: -).

...