Попробуйте:
public static int getInt(byte[] arr, int off) {
return arr[off]<<8 &0xFF00 | arr[off+1]&0xFF;
} // end of getInt
В вашем вопросе не указано, что означают два аргумента (2,4).2 и 4 не имеют смысла в вашем примере, так как индексы в массиве для поиска ox01 и 0x10, я догадался, что вы хотите взять два последовательных элемента, это обычная вещь, поэтому я использовал off и off + 1 в моем методе.
Вы не можете расширить класс byte [] в java, поэтому у вас не может быть метода bytes.getInt, поэтому я создал статический метод, который использует byte [] в качестве первого аргумента.
Хитрость метода заключается в том, что ваши байты являются 8-битными знаковыми целыми числами, а значения свыше 0x80 являются отрицательными и будут расширяться знаком (т. Е. 0xFFFFFF80 при использовании в качестве целого числа).Вот почему маскирование '& 0xFF' необходимо.«<< 8» сдвигает более значимый оставшийся байт на 8 бит.'|'объединяет два значения - так же, как '+'.Порядок операторов важен, потому что << имеет наивысший приоритет, за которым следует & с последующим |- таким образом, скобки не нужны. </p>