如果450KB base64编码,数据的文件大小是多少?

时间:2015-12-05 18:09:40

标签: file base64 size filesize

如果在base64编码时我知道它的大小,是否可以计算数据的大小?

我在base64编码时有一个450KB大小的文件,但解压缩的大小是多少?

是否有一种方法可以在不先解压缩文件的情况下找到输出大小?

2 个答案:

答案 0 :(得分:37)

  

我在base64编码时有一个450KB大小的文件,但解压缩的大小是多少?

事实上,你没有“解压缩”,你解码。结果将小于编码数据。

由于Base 64编码需要原始数据的每6位~8位(或存储3的4个字节),因此数学很简单:

Encoded          Decoded
450KB  / 4 * 3 = ~ 337KB

Base64和解码字符串之间的开销几乎不变,为33.33%。我说“差不多”只是因为末尾的填充字节(=)使字符串长度为4的倍数。参见一些例子:

String              Encoded                   Len   B64   Pad  Space needed
A                   QQ==                      1     2     2    400.00%
AB                  QUI=                      2     3     1    200.00%
ABC                 QUJD                      3     4     0    133.33%
ABCD                QUJDRA==                  4     6     2    200.00%
ABCDEFGHIJKLMNOPQ   QUJDREVGR0hJSktMTU5PUFE=  17    23    1    140.00%
( 300 bytes )       ( 400 bytes )             300   400   0    133.33%
( 500 bytes )       ( 668 bytes )             500   666   2    133.60%
( 5000 bytes )      ( 6668 bytes )            5000  6666  2    133.36%
                                                  ... tends to 133.33% ...


计算未编码数据的空间:

让我们得到上面提到的值QUJDREVGR0hJSktMTU5PUFE=

  1. 编码值中有24个字节。

  2. 让我们计算24/4 * 3 =>结果是18。

  3. 让我们计算编码值末尾=的数量:在这种情况下,1 (我们只需要检查编码数据的最后2个字节)。

  4. 获得18(在步骤2中获得) - 1(在步骤3中获得)我们得到17

  5. 因此,我们需要17个字节来存储数据。

答案 1 :(得分:3)

base64大约增加了原始大小的三分之一,因此您的文件大小应该大于.75 * 450kb。