首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义编码和压缩

自定义编码和压缩
EN

Stack Overflow用户
提问于 2013-03-23 15:26:50
回答 2查看 295关注 0票数 1

这是一个新手提出的两部分问题。

首先,我需要一个简单文本的编码(没有小写/大写的区别),并且我需要它比ASCII更节省空间。因此,我考虑创建自己的5位代码,包含32个字符的范围(字母表加上一些标点符号)。据我所知,所有的现代计算都是以字节为单位“思考”的,所以我无法真正定义我自己的5位编码,除非我真的求助于8位编码。

我想做的是:我定义自己的5位代码,并将文本保存在3个字符的块中,每个块保存为2个字节。每个块将占用总共15位,这些位将被存储在两个字节内(保存16位)。我可能会使用额外的比特进行奇偶校验,即使我实际上并不需要它。这种方法有意义吗?或者还有更好的方法吗?或者,我可以定义一个6位编码,并将文本保存到每个4个字符的块中,每个块保存在3个字节中。

问题的第二部分是:假设文本随后将被压缩(通过标准的文本无损算法,例如zip ),是否值得创建我自己的编码(如上所述)?或者,压缩算法是否会处理8位编码的空间低效问题,使压缩后的文件与最初使用5位或6位编码的压缩文件一样有效?如果是这样的话,对压缩前的文本使用5/6位编码就没有优势了,所以我会干脆跳过这一步。我需要从有经验的程序员那里知道,是什么情况?

谢谢大家

EN

回答 2

Stack Overflow用户

发布于 2013-03-23 19:20:31

压缩算法将更有效地为您处理编码。它将使用霍夫曼编码、范围编码或算术编码,以利用实际数据的统计信息,在每个字母中使用可变位数,甚至是分数位。如果您不尝试对字符进行预编码,将每个字符填充到少于8位的长度,这将会工作得更好。压缩算法通过在每个字节中找到的符号对统计数据进行计数,并在字节中查找重复的模式。

票数 1
EN

Stack Overflow用户

发布于 2013-03-23 19:21:09

  1. 你不需要担心“块”。只需将这5位附加到一个8位缓冲区中,当该缓冲区被填满时,将其清除并将剩余的位推入缓冲区。

唯一的歧义出现在消息的末尾,此时您可能有一个部分填充的缓冲区,尚未填充的位数为>= 5。因此:

a.您必须指定消息的长度(n*5位)或

b.您必须仅指定尾部位的长度(更有效)

  • 压缩算法实际上可能会受到自定义打包的不利影响-(取决于原始数据的类型,如文本)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15588510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档