Base64字符串中的文件比原始文件占用更多空间

时间:2015-06-24 01:36:23

标签: string

我在这种......问题...我通过在base64字符串中编码文件(图像,视频和音频)并将它们添加到字符串中来向我的程序添加资源。我所做的是读取文件,然后将字节转换为Base64字符串并将其写入txt文件,但txt文件比原始文件占用更多的空间。当我将字符串添加到程序代码时也会发生这种情况。编译后的可执行文件占用了大量空间。例如:

一个MP3文件占用2.3 MB txt文件中的Base64字符串占用3.19 MB

优化base64字符串空间的任何解决方案或方法?

Pd积。这只是我努力做的事情。不要在下面评论"为什么"或原因" FOR WHAT"我要这个。答案是:只是为了好玩。

1 个答案:

答案 0 :(得分:4)

Base64固有的。

Base64使用4个八位字节来编码3个八位字节,因为它是一种合理有效的编码任意二进制数据的方法,只使用那些意味着可在ASCII中打印的字节,并且还避免许多在许多上下文中都很特殊的字符。它比十六进制字符串(每个八位字节编码2个八位字节)更紧凑,但总是大于原始二进制。它的价值仅在原始二进制文件无法工作的环境中,因此额外的大小是值得的。

(严格来说它是4个字符来编码3个八位字节,所以如果那时用UTF-16或UTF-32编码,则每3个编码可能是8或16个八位字节)。