전화하는 방법에 따라 다릅니다. 20보다 작 으면 int
(4 바이트 - 하위 3을 사용)에서 간단한 비트 마스크 테스트를 if()
과 함께 사용합니다. 예를 들어
:
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