【问题标题】:Verifying ctypes type precision in Python在 Python 中验证 ctypes 类型精度
【发布时间】:2023-04-01 20:50:01
【问题描述】:
  1. 如果 API 需要 64 位类型,如果 sizeof 返回字节数,我如何检查 ctypes 类型是否有那么多位?
  2. 如何知道当前平台上每个字节有多少位?
  3. CHAR_BIT 在 Python 中定义在哪里?

【问题讨论】:

  • 不,一个 octet 是 8 位。顺便说一句,现在大多数字节都是八位字节宽。 :)

标签: python c ansi limits


【解决方案1】:

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

也就是说……

import os
print os.sysconf('SC_CHAR_BIT')

...我想,你会得到的差不多。不适用于非 Unix 平台。正如 tMC 在 cmets 中指出的那样,它甚至不能在所有 Unix 平台上工作。我相信这是一个 GNU 扩展。

[更新]

实际上,POSIX spec 似乎要求 CHAR_BIT == 8。因此,在任何支持 SC_CHAR_BIT sysconf 选择器的系统上,您实际上并不需要它 :-)。

【讨论】:

  • FWIW- 在 OSX 10.7 上,在包含的 Python 2.6 上;那个conf不存在。 os.sysconf('SC_CHAR_BIT') - ValueError: unrecognized configuration name
  • 哎呀。看起来它可能是一个 GNU 扩展...谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
相关资源
最近更新 更多