2

我正在开发一个接收带有字节数组的数据报包的应用程序,我需要获取它的信息并将其转换为对象。

我已经阅读了文档,它说存储了每个信息在字节数组上的位置,但我似乎无法将其正确解析为对象。最近有人做过类似的工作吗?

4

4 回答 4

5

我建议您查看ByteBuffer。它允许您轻松包装一个字节数组并提取您需要的任何内容:

byte[] arr = ...;
ByteBuffer buff = ByteBuffer.wrap(arr);
int i = buff.getInt(); // interprets the next 4 bytes into an int
于 2012-07-10T15:58:45.990 回答
1

这是经常发生的事情。

如果您有职位,则每个部分都有字节数组。

因此,您可以使用String 的构造函数将字节和字符集作为参数

并构造一个 int,只需执行以下操作:

int l = 0;
for(int i =0; i < 4; i++){      
   l <<= 8;  
   l ^= (long)b[i] & 0xFF;      
} 

(假设您在 Big Endian 中收到 int)

于 2012-07-10T16:01:49.143 回答
0

您没有提供太多信息,但我建议您查看以下链接:

如何将字节数组转换为其数值(Java)?

对于字符串,您应该能够在构造函数中创建一个传递字节数组的新字符串。

于 2012-07-10T16:00:06.227 回答
0

如果您正在发送一个对象并希望在另一端接收该对象,只需使用 ObjectOutputStream 和 ObjectInputStream 进行处理。这样它就可以保持它的格式。

int I;
ObjectOutputStream.write(I)

int j;
J = (int)ObjectInputStream.read()
于 2012-07-10T16:00:20.750 回答