如何将 long 转换为 4 字节?我从 C 程序接收到一些输出,它使用 unsigned long。我需要读取此输出并将其转换为 4 个字节。
然而,java 使用 64 位的 signed long。有什么办法可以进行这种转换吗?
最佳答案
要读取 4 个字节作为无符号的 32 位值,假设它是小端,最简单的做法是使用 ByteBuffer
byte[] bytes = { 1,2,3,4 };
long l = ByteBuffer.wrap(bytes)
.order(ByteOrder.LITTLE_ENDIAN).getInt() & 0xFFFFFFFFL;
虽然 l
可以是带符号的 64 位值,但它只会介于 0 和 2^^32-1 之间,这是无符号 32 位值的范围。
关于Java 将 long 转换为 4 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14108121/