Java如何从字节流中读取64位无符号长字符串
我试图从字节流(由C程序生成)中读取一个无符号长字节。由于这个数字对于一个JavaJava如何从字节流中读取64位无符号长字符串,java,Java,我试图从字节流(由C程序生成)中读取一个无符号长字节。由于这个数字对于一个Javalong来说可能太大了,所以我认为最好的方法是将8个字节读入一个BigInteger(如下所示),但这不起作用 如果您能以一种好的方式提供帮助,我们将不胜感激 ByteBuffer bb = ByteBuffer.wrap(new byte[8]).order(ByteOrder.nativeOrder()); bb.putLong(12345678910L); byte[] bytes
long
来说可能太大了,所以我认为最好的方法是将8个字节读入一个BigInteger(如下所示),但这不起作用
如果您能以一种好的方式提供帮助,我们将不胜感激
ByteBuffer bb = ByteBuffer.wrap(new byte[8]).order(ByteOrder.nativeOrder());
bb.putLong(12345678910L);
byte[] bytes = new byte[8];
for(int i=0; i<8; i++){
bytes[i] = bb.get(i);
}
BigInteger bi = new BigInteger(bytes);// bi is not correct
ByteBuffer bb=ByteBuffer.wrap(新字节[8]).order(ByteOrder.nativeOrder());
bb.普特龙(12345678910L);
字节[]字节=新字节[8];
对于(int i=0;i尝试执行订单调用:
ByteBuffer bb = ByteBuffer.wrap(new byte[8]);
bb.putLong(12345678910L);
最好指定运行c程序的系统的字节顺序。ByteOrder.BIG_ENDIAN或ByteOrder.LITTLE_ENDIAN如果您的ByteOrder.nativeOrder()
是BIG_ENDIAN,则该代码可以工作。您可以通过硬编码来尝试。