当前位置:  开发笔记 > 编程语言 > 正文

将UTF-8(或其他8位编码)压缩为7位或更少位

如何解决《将UTF-8(或其他8位编码)压缩为7位或更少位》经验,为你挑选了2个好方法。

我希望以UTF-8编码的文件不使用超过128个不同的字符,然后将其移动到7位编码以节省1/8的空间.例如,如果我有一个仅使用前128个(ascii)字符的16 MB文本文件,我想削减额外的位以将文件减少到14MB.

我该怎么做呢?

似乎没有现成的免费或专有程序,所以我想我可能会尝试制作一个简单(如果效率低下)的程序.

我的基本思路是从用于每个字符的当前十六进制/十进制/二进制值到七位编码中的128个值创建函数,然后扫描文件并将每个修改后的值写入新文件.

所以,如果文件看起来像(我将使用十进制示例,因为我尝试不必以十六进制思考)

127 254 025 212 015 015 132 ......它会变成

001 002 003 004 005 005 006

如果127映射到001,254映射到005等.

不过,我对一些事情并不完全确定.

    这足以实际缩短文件大小吗?我有一种不好的感觉,这只会在二进制字符串上留下额外的0 - 11011001可能会映射到01000001而不是1000001,我实际上不会节省空间.如果发生这种情况,我该如何摆脱零?

    如何打开文件以二进制/十进制/十六进制读/写而不仅仅是文本?我大部分时间都在使用Python,但如果必须,我可以混淆C语言.

谢谢.



1> Jonathan Fei..:

只需使用gzip压缩,并节省60-70%,省力0%!



2> Thanatos..:

你明白文件被分成字节吗?因此,如果你这样做,你将有7位字节1的第一个字母加上第二个字​​母的1位,然后在第二个字母中,你有第二个字母的6位,以及2位的第三,等等.它看起来像这样:

|AAAAAAAB|BBBBBBCC|CCCCCDDD|DDDDEEEE|EEEFFFFF|FF...
 \------/ \------/ \------/ \------/ \------/
   byte     byte     byte     byte     byte


有趣的ASCII图表+1.如果您使用过OP的方案,则可以保存2个字节.
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有