社区
C语言
帖子详情
压缩算法的实现,如何把编码后的二进制合并。
last_escape
2003-06-09 11:52:57
我做的是一个用huffman编码的压缩程序,编码已经编好了。但如何把二进制合并
让他们少占空间呢?比如编码 A: 110 B: 010 C: 101
我用哪种类型的变量储存编码?又怎么把他们合并后减少空间呢?
或者只要写进文件时合并也行?
...全文
107
9
打赏
收藏
压缩算法的实现,如何把编码后的二进制合并。
我做的是一个用huffman编码的压缩程序,编码已经编好了。但如何把二进制合并 让他们少占空间呢?比如编码 A: 110 B: 010 C: 101 我用哪种类型的变量储存编码?又怎么把他们合并后减少空间呢? 或者只要写进文件时合并也行?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
boyfling
2003-06-14
打赏
举报
回复
如果是:
A: 110
B: 010
C: 101
你可以用一个16位的整型来表示5个字符编码,因为这样最多至浪费1位,可以设定为最高位。其实最高位还可以用来表示这16位是否已经装满5个字符,假若未装满,可置为0,反之为1。
具体用移位就可以实现了。
qhgary
2003-06-10
打赏
举报
回复
可是位数并不一定是8的整数倍,你如果补零凑上了,怎么还原?
xzygod
2003-06-10
打赏
举报
回复
掩码,按位屏蔽
last_escape
2003-06-10
打赏
举报
回复
有什么更好的办法么?
last_escape
2003-06-09
打赏
举报
回复
convert是什么函数?是标准库里的么?
luyiping
2003-06-09
打赏
举报
回复
可以把你们编好的程序发给我看看吗?
bill_lyp@163.com
谢谢了
kicool
2003-06-09
打赏
举报
回复
前几天我也做了这个多媒体作业,我是用字符串暂时存储0,1串,然后取8位,转换成char型的二进制,写入文件。
例如:
A B A C A
110 010 110 101 110
string temp = "110010110101110"
string write = "11001011"
char s = convert(write)
WriteToFile(s)
last_escape
2003-06-09
打赏
举报
回复
xzygod(xzygod) 你的程序能讲解一下么
static BYTE bytenew=0;
static WORD mask[16]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
这是干什么的?掩码么?
xzygod
2003-06-09
打赏
举报
回复
void JpegEnc::WriteBinStream(HUFFCODE huffCode)
{
CHAR codeLen = huffCode.length - 1; // 计算码长
WORD value = huffCode.code;
while (codeLen >= 0)
{
if (value & mask[codeLen])
{
bytenew |= mask[bitPos];
}
--codeLen;
--bitPos;
if (bitPos < 0)
{
CacheWriteByte(bytenew);
if (bytenew == 0xFF)
{
CacheWriteByte(0x00);
}
bitPos = 7;
bytenew = 0;
}
}
}
INT bitPos; //当前字节中Bit位置
static BYTE bytenew=0;
static WORD mask[16]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
哈夫曼
编码
实现
压缩解压缩java
- 遍历文本,将每个字符转换为其哈夫曼
编码
,然后将所有
编码
连接成一个
二进制
串,这就是压缩后的数据。 - 为了恢复原始文本,通常会在
编码
串前添加额外的信息,如
编码
表或树结构,以便解压时重建哈夫曼树。 5. **...
c#
实现
哈夫曼
编码
的压缩
这通常可以通过在压缩文件的开头写入
编码
字典,然后跟随压缩后的
二进制
数据
实现
。 9. **解压缩**:解压缩时,首先读取并解析文件头的哈夫曼
编码
字典,然后按照
编码
解码
二进制
数据,恢复原始文本。 10. **C#编程...
AlgorithmClub:练习算法
迭代
二进制
搜索 递归
二进制
搜索 计数发生 查找最大值和最小值 移位零 找到两个索引求和 找到边缘的最大周长 打印压缩数字 快速分类
合并
排序 路口 计数排序
二进制
搜索树 追加中 包含 横移 倒相 拆下 单链表 删除...
java源码包---java 源码 大量 实例
通过网络或磁盘等方式,把公钥
编码
传送给李四,李四接收到张三
编码
后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...
java源码包2
通过网络或磁盘等方式,把公钥
编码
传送给李四,李四接收到张三
编码
后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章