我是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();

10-07 12:22
查看更多