2011-06-03 79 views
7
  1. 如果API要求64位类型验证ctypes的类型精度,我怎么能检查一个ctypes类型有很多位,如果sizeof回报的字节数?
  2. 如何知道当前平台上每个字节有多少位?
  3. 在Python中定义的CHAR_BIT在哪里?
+0

是不是一个字节总是8位? – tMC 2011-06-03 05:09:41

+2

不是,*八位字节*是8位。顺便提一句,现在的大多数字节都是八位字节。 :) – 2011-06-03 05:25:08

回答

6

C/C++函数签名用C/C++类型编写,如“int”或“double”或“uint32_t”。所有这些都有相应的ctypes等价物,所以通常你不关心比特数。

也就是说......

import os 
print os.sysconf('SC_CHAR_BIT') 

...是最接近你会得到的,我想。不适用于非Unix平台。正如tMC在评论中指出的那样,它甚至不适用于所有的Unix平台。我相信这是一个GNU扩展。

[更新]

其实,POSIX spec似乎支持SC_CHAR_BIT的sysconf选择任何系统上强制CHAR_BIT == 8.所以,你实际上并不需要它:-)。

+2

FWIW - 在OSX 10.7上包含Python 2.6;该conf不存在。 'os.sysconf('SC_CHAR_BIT')'''ValueError:无法识别的配置名称' – tMC 2011-06-03 05:35:23

+0

Whoopsie。看起来它可能是一个GNU扩展......谢谢。 – Nemo 2011-06-03 05:40:16