将本机uint8_t(Java字节)转换为int

Ten*_*r04 5 c++ java java-native-interface

我有一个本机函数(来自库),它在uint8_t类型上做了一些工作(无符号8位数0-255).Java最接近的是必须签名的字节.

如何将此字节转换为适当的正整数以在Java中使用?我知道我必须将它存储在shortint中才能正确表示0-255之间的数字,但我不知道如何转换字节.

我试过int intValue = byteValue & 0xFF;,但这给了我意想不到的结果,所以我怀疑这是不正确的.或者这是正确的,我误解了本机库函数的预期结果.无论如何都会欣赏确认.

bma*_*ies 0

在 Java 中,您可以使用 Guava 库函数将字节转换为 int,将其视为无符号:UnsignedBytes.toInt。因此,如果您将 C++ 无符号值作为字节返回给 Java,则可以修复它。

如果你想将其转换为 int,然后将其作为 int 返回给 java,那应该非常简单。