Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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 为什么是';BigInteger';保存时与';位长度';报告?_Java_Biginteger - Fatal编程技术网

Java 为什么是';BigInteger';保存时与';位长度';报告?

Java 为什么是';BigInteger';保存时与';位长度';报告?,java,biginteger,Java,Biginteger,我有一个名为out的变量,它是一个BigInteger。 当尝试使用 我收到46 如果我使用 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("./testBig.dat")); oos.writeObject(out); oos.close(); 我得到一个208字节的文件 有人能给我解释一下为什么这两个值不同吗?这是因为在Java中存储对象;它不仅仅存储biginger对象的原始内容 您只能通过反序列

我有一个名为
out
的变量,它是一个
BigInteger
。 当尝试使用

我收到46

如果我使用

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("./testBig.dat"));
oos.writeObject(out);
oos.close();
我得到一个208字节的文件

有人能给我解释一下为什么这两个值不同吗?

这是因为在Java中存储对象;它不仅仅存储
biginger
对象的原始内容


您只能通过反序列化来读取内容,例如使用
ObjectInputStream

一个是表示变量值的位数,另一个是包含变量本身序列化值的文件大小(这是一个类)-基本上是重新创建序列化变量的实时副本所需的所有内容。他们几乎毫无关联。你只是想把变量的值写进一个文件吗?你看过文件的内容了吗?这两个数字只是相切的关系。@fvu是的,基本上这就是我的意图,把代表BigInteger所包含的数字的所有位写进一个文件。然后看看这个方法。它将为您提供一个字节数组,其中包含2的补码表示形式中的BigInteger值。
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("./testBig.dat"));
oos.writeObject(out);
oos.close();