你好男孩和女孩。
我正在开发一个基于终端的客户端应用程序,它通过 TCP/IP 与服务器通信并发送和接收任意数量的原始字节。每个字节代表一个命令,我需要将其解析为代表这些命令的 Java 类,以供进一步使用。
我的问题是如何有效地解析这些字节。我不想以一堆嵌套的 if 和 switch-case 告终。
我已经准备好这些命令的数据类。我只需要弄清楚进行解析的正确方法。
以下是一些示例规格:
字节流可以是例如整数:[1,24,2,65,26,18,3,0,239,19,0,14,0,42,65,110,110,97,32,109,121,121,106,228,42,15,20,5,149, 45,87]
第一个字节是 0x01,它是仅包含一个字节的标头的开始。
第二个是长度,它是某些命令中的字节数,这里也只有一个字节。
下一个可以是第一个字节是命令的任何命令,在这种情况下为 0x02,它跟在命令中包含的 n 个字节之后。
很快。最后有校验和相关的字节。
表示 set_cursor 命令的示例类:
/**
* Sets the cursor position.
* Syntax: 0x0E | position
*/
public class SET_CURSOR {
private final int hexCommand = 0x0e;
private int position;
public SET_CURSOR(int position) {
}
public int getPosition() {
return position;
}
public int getHexCommnad() {
return hexCommand;
}
}