在Python中估算以B64字符串编码的二进制数据大小

3

我在Python中有一些二进制数据(本例中为JPG图像),我正在通过API检索作为B64编码字符串。是否有一种简单的方法来估计磁盘上这个(图像)文件的大小?

<Image>/9j/4AAQSkZJRgABAgEASABIAAD/4RriRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdp
AAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9z ....... </Image>
2个回答

16

你可以将字符串长度乘以3/4,得到其字节大小。

(len(str) * 3) / 4

2
Base64难道不比字节实际大小更大吗?我一直以为B64的大小 > 字节大小,而在这种情况下则相反。 - varunsrin
作为后续问题,Base64字符串本身的长度是否等于原始字符串的长度?我知道对于8位字符串来说是正确的,而这是Python中默认的字符串编码方式。 - varunsrin

1
我正在使用这个:

def size(b64string):
    return (len(b64string) * 3) / 4 - b64string.count('=', -2)

我们会移除填充的长度,这个长度可能是0、1或2个等于号=,详见此处。这样做可能不是最优的。我不知道str.count(char)的效率如何。另一方面,它只在长度为2的字符串上执行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接