UDP报文解析,小弟我如何解析只有1bit的数据项啊(对方报文的单位是bit)
UDP报文解析,我怎么解析只有1bit的数据项啊?(对方报文的单位是bit)
一个人定义了UDP报文的数据结构 如下图所示
测试16进制报文:56 53 01 1B 02 0A 0F 1A C4 17 D2 08 17 7C 20 31 20 EC 3F 20 58 B9 54 62 00 00
Navigatonal Status只有4bit 我不知道怎么解析出来 很多都不是8的倍数呢?java的byte至少都是8bit啊...
DatagramPacket 接到的都是以位来处理的吧,想mmsi 30bit,Navigatonal Status 4bit,我怎么解析出来呢。如下所示
难道需要我把byte转换成bit吗?
我觉得对方应该用byte作为UDP报文的单位才合理呢。
大家别仍我转头啊 我做网络编程这方面很少 很多地方都不懂 请多多指教..
我不会解析这种不是8的倍数的数据项...
请大家帮我看看..
------解决方案--------------------
别沉阿.. 望高手解决阿...
一个人定义了UDP报文的数据结构 如下图所示
测试16进制报文:56 53 01 1B 02 0A 0F 1A C4 17 D2 08 17 7C 20 31 20 EC 3F 20 58 B9 54 62 00 00
Navigatonal Status只有4bit 我不知道怎么解析出来 很多都不是8的倍数呢?java的byte至少都是8bit啊...
DatagramPacket 接到的都是以位来处理的吧,想mmsi 30bit,Navigatonal Status 4bit,我怎么解析出来呢。如下所示
难道需要我把byte转换成bit吗?
我觉得对方应该用byte作为UDP报文的单位才合理呢。
- Java code
public ClassHeader onDataType1(DatagramPacket data) { ClassAD clazz = new ClassAD(); for (int i = 0; i < data.getLength(); i++) { // 起始标志 4*2 if (i <= 1) { clazz.starter[i] = data.getData()[i]; } // 报文类型 1*2 -------------------- else if (i == 2) { clazz.type[i - 2] = data.getData()[i]; } // 正文长度 2*2 else if (3 <= i && i <= 4) { clazz.contentLength[i - 3] = data.getData()[i]; } // 时 else if (i == 5) { System.out.println("时:" + Integer.parseInt(data.getData()[i] + "", 16)); } // 分 else if (i == 6) { System.out.println("分:" + Integer.parseInt(data.getData()[i] + "", 16)); } // 秒 else if (i == 7) { System.out.println("秒:" + Integer.parseInt(data.getData()[i] + "", 16)); } // MMSI 4*2 else if (9 <= i && i <= 12) { clazz.mmsi[i - 9] = data.getData()[i]; } } System.out.println("start:" + clazz.getStarter()); System.out.println("type:" + clazz.getType()); System.out.println("contentLength:" + clazz.getContentLength()); return clazz; }
大家别仍我转头啊 我做网络编程这方面很少 很多地方都不懂 请多多指教..
我不会解析这种不是8的倍数的数据项...
请大家帮我看看..
------解决方案--------------------
别沉阿.. 望高手解决阿...