我要做一个二进制文件的数据压缩,采用Huffman算法。首先要统计文件中每个值的出现频率,而文件中每3个值是2个字节表示,也就是说,每个值是12位,请问各位我该怎么进行频率统计呢?
统计完了以后,对每个值采用Huffman树进行重新编码,编码后每个值的长度不一,可能不足一个字节,也有可能很多字节,那我该怎样写入文件啊?这些值长度不一,我不知道具体该怎么办。最好能给出简单的示例代码,大家救救我吧……
统计完了以后,对每个值采用Huffman树进行重新编码,编码后每个值的长度不一,可能不足一个字节,也有可能很多字节,那我该怎样写入文件啊?这些值长度不一,我不知道具体该怎么办。最好能给出简单的示例代码,大家救救我吧……
解决方案 »
- 使用GetModuleFileNameEx的问题
- 属性表的高手在哪里?
- 看完这个,我流泪了,男儿有泪不轻弹,只是未到伤心处!
- help! 获取字符串中的一部分问题!请大虾帮忙!
- 读<Windows程序设计(第4版)>,Windows 下编程 有关对话框程序的问题,待解决!!
- 请叫pDC->textout()
- 对话框内含有很多控件,如何做到在双击某一个控件时让其最大化(对话框已经最大化了)
- ATL 里面能不能用MFC的类库
- 想创建一个开始时Suspend,然后可以被不断唤醒和Suspend的线程,改如何做?
- 我在TC3下编了一个画圆的程序,为什么编译连接通过,运行是却发生错误?
- 是tcp还是udp?
- 我的CSDN为什么老是要登录啊,一天要登录几十回,大家有没有遇见这个问题
用一个字做存储单位
先初始化成0
然后将你的值得数据填充到它的后12位
之后正常应用Huffman算法就行了
编码后的值设置一个结构
struct codeValue
{
int nBytes;//记录这个值占了多少字节
int nBlank;//记录这条记录末尾空余多少位
BYTE* pValue;//数据指针
};
这样通过codeValue就可以进行读写操作了
codeValue是什么啊?我是菜鸟啊。
大家再帮帮我看看有什么好办法啊……
你也可以起别的名
如果你连这个懂看不懂
我觉得你不能做出这个东西啊
你这是工作?
让你们老板换个人吧
对于一条记录先读出nBytes和nBlank然后根据nBytes读出pValue数组再根据nBlank整理pValue的内容
以此类推读出其他记录