如何输出一个二进制的哈夫曼编码的值列表到一个“bin”文件?

bcs8qyzn  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(351)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题

我在做哈夫曼编码项目。但是我被困在如何使用这个代码表输出哈夫曼代码到“bin”文件使用java?红色框中的列表是一个不同长度、逗号分隔的0和1组列表的“字符串”。

50few1ms

50few1ms1#

如何存储这些值的问题很容易回答。
将其存储为一个16位的值,即二进制0000010111,即0x05b7,即十进制1463。
更有趣的是如何从二进制文件中读回这六个值。i、 e.如何将读取0x05b7转换回六个值。其中最重要也是最不简单的部分是知道每个值的终点。i、 为什么第一个值是000,而不是00,也不是0000?
答案是基于哈夫曼树,这显然与编码有关。
就是这样:

?
                          /   \
                         /     \
                        0       1
                       / \     / \
                      0   1   0   1
                     0 1  |   |  0 1
                     a b  c   d  e f

i、 有一个符号 a == 000. 但是没有用0、00或0000表示的符号。
所以第一个符号必须是 a .
下一个是00(nope),或者0010(nope),或者001== b .
等等。
哈夫曼树(如果有意义地创建)是基于符号的分析 c 以及 d 在输入数据中出现的频率更高,因此给它们一个两位表示,而其他四个符号得到更长的三位表示,对总长度是一个好处。我想那是你们班上的前几次练习的主题。

相关问题