【问题标题】:After encoding data size is increasing编码后数据大小增加
【发布时间】:2012-12-14 11:00:03
【问题描述】:

我有一个 XML 格式的文本数据,它的长度约为 816814 字节。它包含一些图像数据以及一些文本数据。 我们使用ZLIB算法进行压缩,压缩后的数据长度为487239字节。

压缩后,我们使用 BASE64Encoder 对数据进行编码。但是在对压缩数据进行编码后,大小在增加,编码数据的长度为 666748 字节。

为什么,编码后的数据量越来越大?还有其他最好的编码技术吗?

问候, 西德什

【问题讨论】:

    标签: encoding compression


    【解决方案1】:

    如前所述,当您将具有 256 个可能值的二进制 8 位字节编码为较小的字符集(在本例中为 64 个值)时,您必然会增加大小。对于一组 n 个允许的字符,随机二进制输入的扩展因子至少为 log(256)/log(n)。

    如果您想减少这种影响,请使用更多字符。很有可能,无论您使用什么媒体,它都可以透明地处理超过 64 个字符。通过简单地发送所有 256 个可能的字节来找出有多少,并查看哪些通过。彻底测试候选集,然后最好找到支持该集合的介质的文档 n

    一旦有了集合,就可以使用简单的硬连线算术代码将 256 的集合转换为 n 的集合,然后再转换回来。

    【讨论】:

      【解决方案2】:

      这很正常。

      如果您的传输介质不是设计用于传输二进制数据而仅用于传输文本数据(例如 XML),则需要完成 Base64

      所以你的 zip 文件得到 base64 编码。

      说白了就是需要转码器把“非ASCII”的字母转成ASCII形式但还记得回去的路

      根据经验,它的大小增加了大约 33% (http://en.wikipedia.org/wiki/Base64#Examples)

      这是 base64 的缺点。你最好使用支持文件传输的协议...但是对于用 XML 编码的文件,你几乎没有选择。

      【讨论】:

      • 是 33% 并且总是 33%,大小的相对增加不会因内容而改变
      猜你喜欢
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      相关资源
      最近更新 更多