在Python中验证ctypes类型精度

Mat*_*ner 8 c python limits ansi

  1. 如果API需要64位类型,ctypes如果sizeof返回字节数,如何检查类型是否有那么多位?
  2. 我怎么知道当前平台上每个字节有多少位?
  3. CHAR_BIT在Python定义?

Nem*_*emo 6

C/C++函数签名是用C/C++类型编写的,如"int"或"double"或"uint32_t".所有这些都具有相应的ctypes等价物,所以通常你不关心位数.

那说......

import os
print os.sysconf('SC_CHAR_BIT')
Run Code Online (Sandbox Code Playgroud)

我认为......就像你将得到的一样接近.不适用于非Unix平台.正如tMC在评论中指出的那样,它甚至不适用于所有Unix平台; 我相信它是一个GNU扩展.

[更新]

实际上,POSIX规范似乎要求CHAR_BIT == 8.所以在任何支持SC_CHAR_BIT sysconf选择器的系统上,你实际上并不需要它:-).

  • 包含Python 2.6的OSX 10.7上的FWIW-; 那个conf不存在.`os.sysconf('SC_CHAR_BIT')` - `ValueError:无法识别的配置名称` (2认同)