如果我在base64编码时知道它的大小,是否可以计算数据的大小?
我在base64编码时有一个大小为450KB的文件,但解压缩的大小是多少?
有没有找到输出大小而不先解压缩文件的方法?
我在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个字节来存储数据.