1

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

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

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

问候, 西德什

4

2 回答 2

2

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

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

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

于 2012-12-14T16:11:29.940 回答
2

这是完全正常的。

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

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

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

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

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

于 2012-12-14T11:05:27.400 回答