我正在分析一个字节数组,它包含不同类型的变量我要把这个阵列从HID连接到我的手机上。数组是由C程序员制作的。我试图用ByteBuffer类解析它:
byte[] buffer = new byte[64];
if(connection.bulkTransfer(endpoint, buffer, 64, 1000) >= 0)
{
ByteBuffer byteBuffer = ByteBuffer.wrap(buffer);
char mId = byteBuffer.getChar();
short rId = byteBuffer.getShort();
// ............................
}
但是这个变量的值是不正确的有人能告诉我我做错了什么吗?
最佳答案
如果字节顺序(小字节与大字节)是问题所在,您可以将ByteBuffer
的字节顺序设置为本机,而不必更改所有程序:
ByteBuffer byteBuffer = ByteBuffer.wrap(buffer);
byteBuffer.order(ByteOrder.nativeOrder()); // Set native byte order
char mId = byteBuffer.getChar();
short rId = byteBuffer.getShort();
另一方面,如果您发现ByteBuffer对象比字节数组更方便,请告诉C程序员返回一个direct byte buffer而不是一个数组:对各方都更容易,而且可能更高效。
关于java - 将C字节数组解析为Java ByteBuffer。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18151620/