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