在 Python 中验证 ctypes 类型精度

发布于 2024-11-13 07:12:06 字数 375 浏览 3 评论 0原文

  1. 如果 API 需要 64 位类型,我如何检查 ctypes 如果 sizeof 返回数字,则 type 具有那么多位字节数?
  2. 如何知道当前平台上每个字节有多少位?
  3. Python 中的 CHAR_BIT 定义在哪里?
  1. If an API expects a 64 bit type, how can I check that a ctypes type has that many bits if sizeof returns the number of bytes?
  2. How do I know how many bits are in each byte on the current platform?
  3. Where is CHAR_BIT defined in Python?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

生活了然无味 2024-11-20 07:12:06

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 选择器的系统上,您实际上并不需要它:-)。

C/C++ function signatures are written with C/C++ types, like "int" or "double" or "uint32_t". All of these have corresponding ctypes equivalents, so normally you do not care about the number of bits.

That said...

import os
print os.sysconf('SC_CHAR_BIT')

...is about as close as you will get, I think. Does not work on non-Unix platforms. And as tMC points out in the comments, it does not even work on all Unix platforms; I believe it is a GNU extension.

[update]

Actually, the POSIX spec appears to mandate CHAR_BIT == 8. So on any system that supports the SC_CHAR_BIT sysconf selector, you do not actually need it :-).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文