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

3 投票
2 回答
6059 浏览
提问于 2025-04-16 22:05

我在Python中有一些二进制数据(在这个例子中是一个jpg图片),我通过API获取到的是一个B64编码的字符串。有没有简单的方法可以估算这个(图片)文件在磁盘上的大小呢?

<Image>/9j/4AAQSkZJRgABAgEASABIAAD/4RriRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdp
AAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9z ....... </Image>

2 个回答

1

我正在使用这个:

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

我们去掉填充的长度,这个填充可能是没有、一个或两个字符 =,具体可以参考这里的解释

可能不是最优的做法。我不太清楚 str.count(char) 的效率怎么样。不过,另一方面,这个操作只是在长度为2的字符串上进行。

17

你可以把字符串的长度乘以3/4,这样就能得到它占用的字节大小。

(len(str) * 3) / 4

撰写回答