извлечь идентификатор из байта [] - PullRequest
0 голосов
/ 23 ноября 2011

Я прочитал byte[] из сокета как Param_Code, который включает в себя идентификатор.

byte[] cbuf = new byte[4];
socketReader.read(cbuf, 0, 4);
int Param_Code = byteArrayToIntBI(cbuf, 0);

public static int byteArrayToIntBI(byte[] b, int offset) {
        int value = 0;
        for (int i = 3; i > -1; i--) {
            int shift = (i) * 8;
            value += (b[i + offset] & 0x000000FF) << shift;
        }
    return value;
   }

• Вариант 1: Иногда Param_code соответствует только идентификатору

• Вариант 2: Иногда Param_code соответствует 0x40000000 + идентификатор

• Вариант 3: Иногда Param_code соответствует 0x80000000 + идентификатор

У меня вопрос: как я могу получить ID из Param_code, учитывая вышеописанные опции.

1 Ответ

0 голосов
/ 23 ноября 2011

Как насчет использования ByteBuffer?

byte[] cbuf = new byte[4];
socketReader.read(cbuf, 0, 4);
ByteBuffer buffer = ByteBuffer.wrap(cbuf);
int Param_Code = buffer.getInt();
...