我正在使用霍夫曼算法开发文件压缩器,现在我面临一个问题:
通过对单词使用算法:stackoverflow,我得到以下结果:
a,c,e,f,k,l,r,s,t,v,w = 1 time repeated
o = 2 times repeated
a,c,e,f,k,l,r,s,t,v,w = 7.69231%
and
o = 15.3846%
所以我开始将 then 插入到二叉树中,这将得到结果:
o=00
a=010
e=0110
c=0111
t=1000
s=1001
w=1010
v=1011
k=1100
f=1101
r=1110
l=1111
这意味着树中角色的路径,考虑到左边为 0,右边为 1。
那么“stackoverflow”这个词将是:100110000100111010011111000010110110111011011111001010
好吧,我想将整个值放入二进制文件中,以位为单位,这将导致 47 位,恰好是 6 字节,但我只能将其设为 47 字节,因为使用 fwrite 放入文件的最小值或者 fprintf 是 1byte,通过使用 sizeof(something)。
我的问题是:我怎样才能在我的文件中只打印一点?