是否有办法将一个字节的孔数组(比方说1024)转换为一个总共256个整数的int数组,而不使用类似的东西:
int result = 0;
result = b[0] & MASK;
result = result + ((b[1] & MASK) << 8);
result = result + ((b[2] & MASK) << 16);
result = result + ((b[3] & MASK) << 24);
return result;
答案 0 :(得分:4)
int array ?不,没有。您可能能够将类似的其他API添加到数组中,但即便如此,它们也会在下面执行类似的操作。例如,ByteBuffer.wrap(array).asIntBuffer()
会这样做:它会给你一个类似数组的API,但在它下面它会完全按照你说的做。
答案 1 :(得分:0)
您可以使用不安全但可能不应该
try {
Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
UNSAFE = (Unsafe) theUnsafe.get(null);
} catch (Exception e) {
throw new AssertionError(e);
}
byte[] bytes = new byte[128];
for (int i = 0; i < bytes.length; i++) bytes[i] = (byte) i;
int[] ints = new int[bytes.length / Integer.BYTES];
UNSAFE.copyMemory(bytes, Unsafe.ARRAY_BYTE_BASE_OFFSET, ints, Unsafe.ARRAY_INT_BASE_OFFSET, bytes.length);
for (int i : ints)
System.out.printf("%08x%n", i);