在java中将字节数组转换为int数组

时间:2017-03-28 20:22:57

标签: java arrays type-conversion int byte

是否有办法将一个字节的孔数组(比方说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;

2 个答案:

答案 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);