在Python中估计编码为B64字符串的二进制数据大小
我在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