社区
C#
帖子详情
求压缩算法
FBI_NET
2004-11-02 12:56:31
将0-9、A-Z组成的40位字符串压成20位的字符串。
按我个人的思路就是将36进制转成更高的进制,不知道有没有更好的办法??
...全文
201
17
打赏
收藏
求压缩算法
将0-9、A-Z组成的40位字符串压成20位的字符串。 按我个人的思路就是将36进制转成更高的进制,不知道有没有更好的办法??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FBI_NET
2004-11-04
打赏
举报
回复
谢谢大家!
AhBian
2004-11-03
打赏
举报
回复
ZIP 压缩算法中,霍夫曼算法是很重要的。
利用霍夫曼算法编码时,就是用最短的编码表示最频繁的字符,较少出现的可以使用较长的编码,这就是不等宽编码的原理。
数据结构的教科书中,对霍夫曼算法有详细的介绍。
这是典型的计算数学,但不是广义上的数学,数学太博大了。
长江
2004-11-03
打赏
举报
回复
佩服!!
哈哈007哈
2004-11-03
打赏
举报
回复
up
FBI_NET
2004-11-03
打赏
举报
回复
TO:triout(笨牛)
老大,太佩服你了,今天我终于明白,原来数学是这么的博大精深,又一次后悔当初没学好数学~~
太感谢 triout(笨牛) 前辈了,看来我要补补数学才行:)
思路是有点想通了,我试试看能不能写出代码,多谢前辈指点:)
triout
2004-11-03
打赏
举报
回复
回复人: FBI_NET(FBI) ( ) 信誉:100 2004-11-02 14:11:00 得分: 0
我想了半天,也想不明白同样几个数字怎么可能用来表示出更简洁的数据,
比如0-9表示了10进制,所有的组合已经存在了,那怎么还能用这些字符表示出相等关系的位数更少的数据呢?想不明白~
你说想不明白,其实很简单,这就是一个编码的问题。
我前面说的3种编码、64进制等说法是:
你40个字符(0-9,A-Z)中,每个字符需要一个字节(8个二进制位)表示,总共需要320个二进制位,这是使用了标准的ASCII编码方式,如果我们不用这个编码方式,而使用自己的编码方式,比如对这36个字符分别用0-35来标识他们,这样,每个字符最多只要6个二进制位就可以识别了,然后把这40个字符的6个二进制位进行排列是240个二进制位,转换为标准的字节数据是30个字节,相比原来的40个字节就减少了,不过在解码的时候就需要自己写代码来识别这些字符了,同时还需要一张映射表,来说明某个编号对应的究竟是哪个字符。
而使用我后面讲的非等宽编码,原理基本一样
triout
2004-11-03
打赏
举报
回复
我说的冲突是指在实际操作中,由用户识别数字0和字母O的时候以及识别数字2和字母Z的时候,甚至数字1和小写字母l的时候都会出现难以区分究竟是数字还是字母的问题,并不是说他们在计算机中会有冲突,这是我在工作中经常遇到用户咨询的问题。
所以,我建议如果必要把这些字符都剔除,就只有32个字符了,用32进制刚好50%的压缩率
FBI_NET
2004-11-02
打赏
举报
回复
我想了半天,也想不明白同样几个数字怎么可能用来表示出更简洁的数据,
比如0-9表示了10进制,所有的组合已经存在了,那怎么还能用这些字符表示出相等关系的位数更少的数据呢?想不明白~
FBI_NET
2004-11-02
打赏
举报
回复
TO: triout(笨牛)
老大,你说的逐位取数好复杂,我看不明白,还有,数字0和字母O有冲突,数字2和字母Z有冲突,我不明白他们为什么有冲突,能说明白点吗?
谢谢 triout(笨牛)
谢谢大家:)
jimh
2004-11-02
打赏
举报
回复
如果你的数字跟字符是有一定规律的,那使用一套有效的编码可以压缩到一半一下,如果只是简单使用64位编码,那只有75%的效率
Alden
2004-11-02
打赏
举报
回复
UP
triout
2004-11-02
打赏
举报
回复
最好的办法就是使用32进制简单实现,达到50%的压缩率,但要求你把其中的部分字符剔除掉,比如:数字0和字母O有冲突,数字2和字母Z有冲突,这样把这4个字符都剔除就OK了。
triout
2004-11-02
打赏
举报
回复
所以,你可以针对你产生的40个字符进行分析,看哪些字符出现的频率高,然后进行适当的分配其的编码长度,才能得到最优解。
triout
2004-11-02
打赏
举报
回复
上面提到的3个压缩算法中,每个的最坏压缩率都是75%,最好的压缩率分别是:
62.5%
50%
37.5%
triout
2004-11-02
打赏
举报
回复
同意1楼的,用64进制来处理最简单,但只有75%的压缩率,达不到你要求的50%
一个比较复杂的算法是:
逐位取数,如果是1,则后面5位是数据(A-Z),如果是0,则后面4位为数据(0-9),这样,压缩率会稍有提高,理论为:71.53%。
另外的一个变通是:
逐位取数,如果是1,则后面5位是数字(A-Z、8、9),如果是0,则后面3位是数字(0-7),压缩率又有所提高,理论为:69.44%。
或者:
逐位取数,如果是1,则后面5位是数字(A-Z、4-9),如果是0,则后面2位是数字(0-3),理论压缩率为:70.83%。
如果要达到50%的压缩率,除非使用其他的压缩算法了,比如在上面压缩的基础上进一步压缩或直接对40个字符进行压缩。
trnbo
2004-11-02
打赏
举报
回复
同意64位,^_^
zhouyong2052
2004-11-02
打赏
举报
回复
36进制效率低,64进制吧!
java源码包---java 源码 大量 实例
java
求
一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,
算法
相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(key...
动态规划
算法
秘籍
9大模块42集:动态规划秘籍,线性DP,区间DP,背包问题,树形DP,数位DP,状态
压缩
DP,插头DP,动态规划优化。通过本课程学习,全面系统掌握动态规划
算法
解决实际问题,精通动态规划
算法
不是梦。 无论是对
算法
感兴趣...
数据
压缩
算法
—2无损
压缩
算法
字典
算法
是最为简单的
压缩
算法
之一。它是把文本中出现频率比较多的单词或词汇组合做成一个对应的字典列表,并用特殊代码来表示这个单词或词汇。例如: 有字典列表: 00=Chinese 01=People 02=...
JPEGLS图像
压缩
算法
的FPGA实现(一)
压缩
算法
绪论 JPEG-LS是在ISO/ITU的新标准中用于对静态连续色调图像进行无损或进无损
压缩
...1.
压缩
算法
简介与评估 1.1
压缩
算法
简介 无损
压缩
就是指经过
压缩
并重建后的图像和原图像完全一样,没有任何损失。如果重建图像和原图
C#
110,561
社区成员
642,566
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章