Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何从字节流中读取64位无符号长字符串_Java - Fatal编程技术网

Java如何从字节流中读取64位无符号长字符串

Java如何从字节流中读取64位无符号长字符串,java,Java,我试图从字节流(由C程序生成)中读取一个无符号长字节。由于这个数字对于一个Javalong来说可能太大了,所以我认为最好的方法是将8个字节读入一个BigInteger(如下所示),但这不起作用 如果您能以一种好的方式提供帮助,我们将不胜感激 ByteBuffer bb = ByteBuffer.wrap(new byte[8]).order(ByteOrder.nativeOrder()); bb.putLong(12345678910L); byte[] bytes

我试图从字节流(由C程序生成)中读取一个无符号长字节。由于这个数字对于一个Java
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,则该代码可以工作。您可以通过硬编码来尝试。