当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如果450KBbase64编码,数据的文件大小是多少?》经验,为你挑选了1个好方法。

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

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

有没有找到输出大小而不先解压缩文件的方法?



1> Bacco..:

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

实际上,你没有"解压缩",你解码.结果将小于编码数据.

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

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

Base64和解码字符串之间的开销几乎不变,为33.33%.我说"接近"只是因为end(=)处的填充字节使字符串长度为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=上面提到的价值.

    编码值中有24个字节.

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

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

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

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


简而言之:`origBytes = base64Bytes * 3/4-numEqualChars`
推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有