gpt4 book ai didi

java - 是否有任何编码可以让我安全地在文件中写入和读取任何 8 位字符代码(整个 256 而不仅仅是 128)?

转载 作者:行者123 更新时间:2023-12-02 03:24:34 25 4
gpt4 key购买 nike

我正在尝试实现霍夫曼树压缩。它的工作原理几乎是为文本文档中最常见的字符提供 < 8 位代码,为不太常见的字符提供更大的代码。然后有一个编码的二叉树,可以让您向下导航,1 告诉您向左走,0 告诉您向右走,这将引导您找到字符。

很明显,有些 block 的长度不是 8 个字节。我一直在根据需要将它们四舍五入,并在末尾添加 0 并将它们转换为字符。然而,我刚刚发现java每个字符写入3个字节。因为这是关于压缩的,所以我显然需要一个字节。

问题是我不知道最终会尝试写入哪些字节。三个不同的 < 8 位代码可能会混合在一起。我需要能够将任何代码写入文本文件。然而,存在无效的字节序列,因此我的整个方法都被搞砸了。

有什么方法可以让任何字节序列在文件的某个部分中有效,并按字面意思存储它,而不用担心字符过早结束文件或导致另一个恶作剧?我在 Mac 上编码,所以这是一个问题,与 Windows 不同,Windows 中只在开头有文件的长度,因此不需要文件结束字符。

如果这里没有直接的解决方案,那么也许我可以制作自己的编码,该编码不会退出文件并将其嵌套在更常见的文件中?

最佳答案

这看起来是 Java Bitset 的一个很好的用例:https://docs.oracle.com/javase/8/docs/api/java/util/BitSet.html

将数据写入文件时,您应该输出已编码的值的数量,然后您只需要序列化的位流。

关于java - 是否有任何编码可以让我安全地在文件中写入和读取任何 8 位字符代码(整个 256 而不仅仅是 128)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56913160/

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