Целое число обычно составляет 4 байта. Но если вы храните небольшое число, например, 99, остальные три байта хранят 8 битов 0-значного значения. Спецификация просит вас использовать одно целочисленное хранилище (4 байта) для хранения 4 различных меньших чисел в своих байтах.
Самый простой способ - использовать функцию toInt для массива из 4 байтов, например (нет проверки длины байта [] и эта функция не проверена - она только для иллюстрации)
public static final int toInt(byte[] b)
{
int l = 0;
l |= b[0] & 0xFF;
l <<= 8;
l |= b[1] & 0xFF;
l <<= 8;
l |= b[2] & 0xFF;
l <<= 8;
l |= b[3] & 0xFF;
return l;
}
byte[] bytes = new byte[] {99, 4, 9, 0};
int i = toInt(bytes, 0);
32-битное значение типа int
11110101 00000100 00001001 00000000
^byte ^byte ^byte ^byte
Каждого блока из 8 битов в int достаточно, чтобы «закодировать» / «сохранить» меньшее число. Таким образом, int
может использоваться для объединения 4 меньших чисел.