我是Java的新手,正在通过UDP / TCP使用自己的网络协议编写程序。 C中有这样一个数据包:
struct test_package {
u32 cmd;
u32 args;
u32 flags;
};
以UDP为例,我从DatagramPacket中得到的是字节数据[]。如何将其转换为包结构?
如果使用C语言,则没有对齐限制,只是
(struct test_package *)data
。谢谢
最佳答案
Java不提供直接的内存访问,因此您不能像在C语言中那样将其强制转换为结构。您必须自己解析字节数组,例如:
byte data[] = ...;
DataInput input = new DataInputStream(new ByteArrayInputStream(data));
int cmd = input.readInt();
int args = input.readInt();
int flags = input.readInt();