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

标签 java integer arrays endianness

我需要获取 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 位。

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

关于java - 如何在java中正确获取小端整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35560836/

相关文章:

java - 是否可以将所有相似的 Unicode 字符分组为合适的 ASCII 字符

java - 从Main迁移到Gradle时未发现主类错误

python - 从两个 8 位整数计算 16 位整数值?

java - 当我将数组中的数字相互相乘时,我得到一个负数。我该如何纠正这个问题?

java - 客户端-服务器代码应该写在一个 "project"还是两个?

java - 如何在Java中以JSON和XML格式序列化/反序列化?

c# - 字符串和数字条件的最佳实践

Java:将字符串变量与 "null"值进行比较时出现问题

javascript - 根据每个数组项内的值重复数组项 x 次

javascript - 在 es6 中使用 map 映射嵌套数组