こんにちは男の子と女の子。
TCP/IP を介してサーバーと通信し、任意の数の raw バイトを送受信する端末ベースのクライアント アプリケーションを開発しています。各バイトは、さらに使用するために、これらのコマンドを表す Java クラスに解析する必要があるコマンドを表します。
これらのバイトを効率的に解析する方法について質問します。ネストされた if と switch-cases の束で終わりたくありません。
これらのコマンドのデータ クラスはすぐに使用できます。解析を行う適切な方法を理解する必要があるだけです。
仕様の例を次に示します。
バイト ストリームは、たとえば、[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 で、これは 1 バイトのみを含むヘッダーの開始です。
2 つ目は、特定のコマンドのバイト数である長さです。ここでも 1 バイトのみです。
次は、最初のバイトがコマンド (この場合は 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;
}
}