使用字节指针使用JNA写入响应

时间:2014-06-17 17:55:54

标签: java c bytearray jna

我正在尝试使用JNA中的C函数:

C:

int addHoliday(unsigned char* data);

JAVA:

int addHoliday(byte[] data);

我正在传递带有信息的byte [],但是在C中我使用相同的指针来编写响应。我可以用新信息捕获相同的byte []吗?

2 个答案:

答案 0 :(得分:1)

将其作为字节指针数组:

int addHoliday(byte* data);

答案 1 :(得分:1)

是的,当在直接函数调用中使用时,原始数组就像内存缓冲区一样工作。本机代码将在本机调用期间看到一致的缓冲区,并且您的Java代码将在byte[]中看到本机代码写入的任何数据。

对于数据的签名,具有高位设置的任何unsigned char元素将在Java中的byte[]中显示为负值。要正确提取数据,您需要屏蔽更高的位,例如

int unsigned_value = (int)byte_value & 0xFF;