我有一个XML格式的文本数据,它的长度大约是816814字节。它包含一些图像数据以及一些文本数据。 我们使用ZLIB算法进行压缩和压缩后,压缩数据长度为487239字节。
压缩后,我们使用BASE64Encoder编码数据。但是在对压缩数据进行编码之后,大小增加并且编码数据的长度是666748字节。
为什么编码后数据大小会增加?还有其他最好的编码技术吗?
此致 Siddesh
答案 0 :(得分:2)
这是完全正常的。
如果您的传输介质不是为传输二进制数据而是仅传输文本数据(例如XML),则需要完成Base64
所以你的zip文件被base64编码。
简单地说,它要求代码转换器将“非ASCII”字母更改为ASCII格式但仍记得返回的方式
根据经验,它的大小增加了约33%(http://en.wikipedia.org/wiki/Base64#Examples)
这是base64的缺点。你最好使用支持文件传输的协议......但对于在XML中编码的文件,你几乎没有选择。
答案 1 :(得分:2)
如上所述,当您将具有256个可能值的二进制8位字节编码为较小的字符集(在本例中为64个值)时,您必然会增加大小。对于一组 n 允许的字符,随机二进制输入的扩展因子至少为log(256)/ log( n )。
如果您想减少这种影响,请使用更多字符。有可能无论您使用何种介质,它都可以透明地处理超过64个字符。通过简单地发送所有256个可能的字节来查明有多少字节,并查看哪些字节可以通过。彻底测试候选集,然后理想地找到支持该组 n < 256。
一旦你有了这个集合,那么你可以使用一个简单的硬连线算术代码从256的集合转换为 n 的集合并返回。