Java OSX和Windows的字节数据类型是否有差异
我使用的字节数组数据类型声明为:Java OSX和Windows的字节数据类型是否有差异,java,arrays,Java,Arrays,我使用的字节数组数据类型声明为: byte[] sendbuf= new byte[64]; 稍后,我呼吁: dev.write(sendbuf); // see class code below for this 有人能告诉我为什么在OSX 10.7.5下一切正常,但在Windows XP下我得到一个异常参数不正确?两个操作系统之间的数据类型是否有差异 HIDDevice.class是: public native int write(byte[] data) throws IOExce
byte[] sendbuf= new byte[64];
稍后,我呼吁:
dev.write(sendbuf); // see class code below for this
有人能告诉我为什么在OSX 10.7.5下一切正常,但在Windows XP下我得到一个异常参数不正确?两个操作系统之间的数据类型是否有差异
HIDDevice.class是:
public native int write(byte[] data) throws IOException;
/**
* Read an Input Report to a HID device.
*
* @param buf a buffer to put the read data into
* @return the actual number of bytes read
* @throws IOException if read error occured
*/
以下是错误:
java.io.IOException: The parameter is incorrect.
at com.codeminders.hidapi.HIDDevice.write(Native Method)
at HIDTesting2.hidData.run(hidData.java:96)
我应该更好地阅读hidapi的说明。数据[]的第一个字节必须包含报告ID。对于仅支持单个报告的设备,必须将其设置为0x0。从某种程度上说,在我的OSX 10.7.5环境中,如果没有它,它工作得很好。我的Arduino设备很好地获得了消息,并且我能够从第一个元素字节[0]处理字节[]数组。然而,当我在XP计算机上运行.jar时,HID接口正在寻找0x0的第一个字节。我所需要做的就是更改代码,将其作为缓冲区的第一个字节传递,Windows和Mac都可以看到写请求 你能发布完整的堆栈跟踪吗?Java在任何地方运行-字节总是字节-八位。但请记住,当你调用非JDK本机方法时,你不是在调用Java-它是依赖于系统的代码,可能取决于特定系统上使用的路径分隔符的风格。你调用的是本机方法,那么,您确定不同操作系统上的实现是相同的吗?异常的根必须在本机代码中。本机方法是唯一的协定。实现完全依赖于操作系统。