Я думаю, что в Java нет хороших трюков, таких как псевдонимы, которые вы можете сделать в C. Вам придется делать это вручную:
public int[] pack(byte[] bytes) {
int n = bytes.length >> 1;
int[] packed = new int[n];
for (int i = 0; i < n; ++i) {
int i2 = i << 1;
int b1 = bytes[i2] & 0xff;
int b2 = bytes[i2 + 1] & 0xff;
packed[i] = (b1 << 8) | b2;
}
return packed;
}
(Вероятно, это может быть немного ускорено, но, вероятно, не стоит этого для 1000 элементов, если это не сделано много.) Обратите внимание, что повышение с byte
до int
требует немного дополнительной работы, чтобы справиться расширение нежелательного знака.