如何在 java 中正确获取小端整数

How to properly get little-endian integer in java

我需要将 64 位小端整数作为字节数组,高 32 位为零,低 32 位包含一些整数,假设它是 51。

现在我是这样做的:

 byte[] header = ByteBuffer
            .allocate(8)
            .order(ByteOrder.LITTLE_ENDIAN)
            .putInt(51)
            .array();

但我不确定这样做是否正确。我做对了吗?

尝试以下方法如何:

private static byte[] encodeHeader(long size) {
    if (size < 0 || size >= (1L << Integer.SIZE)) {
        throw new IllegalArgumentException("size negative or larger than 32 bits: " + size);
    }

    byte[] header = ByteBuffer
            .allocate(Long.BYTES)
            .order(ByteOrder.LITTLE_ENDIAN)
            .putInt((int) size)
            .array();
    return header;
}

个人觉得这样更清晰,可以使用完整的32位。

我忽略了这里的标志,你可以单独传递它们。我改变了答案,将缓冲区的位置放在大小的末尾。