gpt4 book ai didi

java - 0's and 1' s 的字符串作为位文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:18 25 4
gpt4 key购买 nike

我正在开发 Huffman Java 应用程序,我快完成了。不过我有一个问题。我需要将类似“101011101010”的字符串保存到文件中。当我用我当前的代码保存它时,它会将它保存为字符,每个 0 或 1 占用 1 个字节。我很确定可以将每个 0/1 保存为一个位。

我已经用 BitSet 和 Integer.valueOf 尝试了一些东西,但我无法让它们工作。这是我当前的代码:

FileOutputStream fos = new FileOutputStream("encoded.bin");
fos.write(encoded.getBytes());
fos.close();

其中 'encoded' 是一个字符串,可以类似于:“0101011101”。如果我尝试将其保存为整数,则前导 0 将被删除。

提前致谢!

编辑:霍夫曼是一种压缩方法,因此输出文件应尽可能小。

最佳答案

我想我找到了答案。我使用以下代码将 1 和 0 放入 BitSet 中:

BitSet bitSet = new BitSet(encoded.length());
int bitcounter = 0;
for(Character c : encoded.toCharArray()) {
if(c.equals('1')) {
bitSet.set(bitcounter);
}
bitcounter++;
}

之后,我使用 bitSet.toByteArray() 将其保存到文件中当我想再次阅读它时,我使用 BitSet.valueOf(bitSet.toByteArray()) 将它转换回位集。然后我像这样遍历 bitset:

String binaryString = "";
for(int i = 0; i <= set.length(); i++) {
if(set.get(i)) {
binaryString += "1";
} else {
binaryString += "0";
}
}

感谢所有帮助过我的人。

关于java - 0's and 1' s 的字符串作为位文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39680749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com