uint8_t 和 uint16_t 的 SWIG 包装

发布于 2025-01-05 03:59:25 字数 212 浏览 1 评论 0原文

根据 SWIG 文档(21.9.1 默认基元类型映射),C uint8_t映射到 16 位的 Java Short,而 C uint_15_t 映射到 32 位的 Java int。我相信 C 函数分别是 8 位和 16 位,为什么 SWIG 在 Java 中包装时将位数加倍?

Per the SWIG Documentation (21.9.1 Default primitive type mappings), the C uint8_t is mapped to a Java short which is 16 bits and the C uint_15_t is mapped to a Java int which is 32 bits. I believe the C functions are 8 and 16 bits respectively, why does SWIG double the number of bits when wrapping in Java?

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

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

发布评论

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

评论(1

从来不烧饼 2025-01-12 03:59:25

问题是 Java 类型总是有符号的。

因此,如果您有一个从 0 到 255 的无符号 C 类型,则可以表示该范围上半部分的最小 Java 类型是短整型。

另一种方法是转移或以某种方式转换 uint8_t 以使用 Java byte 的负数部分,但其语义非常违反直觉。

The problem is that Java types are always signed.

Thus if you have an unsigned C type that goes from 0 to 255, the smallest Java type that can represent the upper half of that range is a short.

The alternative is that you shift or somehow transform your uint8_t to use the negative parts of Java's byte, but the semantics of that are very counterintuitive.

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