どのように多くの異なるメソッドを呼び出すかによって異なります。それが(ここでは推測している)20未満であれば、int
(4バイト - 下位3を使用)で単純なビットマスクテストをif()
と使用します。例えば
:あなたが唯一の停止、その後1つのメソッドを呼び出している場合
public static void callMethod(byte[] bytes) {
int bits = (bytes[2] & 0xFF) << 16 +
(bytes[1] & 0xFF) << 8 +
(bytes[0] & 0xFF);
if ((bits & 1) > 0) {
methodForBit0Set(bytes);
}
if ((bits & 2) > 0) {
methodForBit1Set(bytes);
}
if ((bits & 4) > 0) {
methodForBit3Set(bytes);
}
// etc
}
、あなたがifs
間elses
を使用したいと思う、とも最も頻繁にのためにテストを注文することもできます最初に期待される。
ハッシュマップを使用すると、でなくても、これらの非常に高速な操作よりもはるかに高速です。多くのテストを行っても、この読み込み、デバッグ、および保守がより簡単です。
ありがとうございます。機能表はありませんか? – fnobbi
バイトをマスクして、符号なしとして処理する必要があります。 'bits'はその唯一の24ビットとして' int'になります。これが検索するパターンであれば、私は最も低いビットセットを検索し、その値をオンにします。 –
なぜあなたは長く使っていますか?おそらくintを使用することを意図していました。なぜなら、それはテキストで言及したように4バイト幅であるからです。 longは8バイトで、3バイトのメッセージの場合は残念です。 – Durandal