Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OSX和Windows的字节数据类型是否有差异_Java_Arrays - Fatal编程技术网

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-它是依赖于系统的代码,可能取决于特定系统上使用的路径分隔符的风格。你调用的是本机方法,那么,您确定不同操作系统上的实现是相同的吗?异常的根必须在本机代码中。本机方法是唯一的协定。实现完全依赖于操作系统。