file - 如果450KB base64编码的数据大小是多少?

标签 file base64 size filesize

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

使用base64编码时,我的文件大小为450KB,但解压缩的大小是多少?

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

最佳答案

I've a file that is 450KB in size when base64 encoded but what size is it decompressed?



实际上,您不会“解压缩”,而是解码。结果将小于编码数据。

由于Base 64编码对于原始数据的每6位需要〜8位(或4个字节以存储3个),因此数学运算很简单:
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=值。
  • 编码值中有24个字节。
  • 让我们计算24/4 * 3 =>结果是18。
  • 让我们计算编码值末尾的=的数量:在这种情况下,为1
    (我们只需要检查编码数据的最后2个字节)。
  • 得到18(在步骤2中获得)-1(在步骤3中获得),我们得到17

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

    关于file - 如果450KB base64编码的数据大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109053/

    相关文章:

    Ruby 函数列表文件递归

    c++ - 警告 : control reaches end of non-void function [-Wreturn-type]

    java - 在 Java 中读取 Windows 文件摘要属性(标题、主题、作者)

    silverlight-4.0 - 银光 4.0 : How to convert byte[] to image?

    python - PyQt4:更改 QTabBar 上的文本大小和字体

    ios - 多点连接 : Share Files to all peers simultaneously

    .net - 使用 .NET 通过 HTTP 发送 Base64 编码字符串时出现问题

    php - 在 PHP 中使用 AJAX 请求保存 base64 编码的图像

    java - 如何使用反射创建具有大小的 byte[]?

    iphone - 如何知道适合固定大小的 UILabel 的 NSString 长度?