擅长:python、mysql、java
<p>去掉等号是可以的,只要你知道它们的作用。</p>
<p>Base64每编码3个字节输出4个字符(换句话说,每个字符编码6位)。填充字符的添加使得任何base64字符串的长度始终是4的倍数,填充字符实际上不会对任何数据进行编码。(我不能肯定<em>为什么</em>这样做-作为检查字符串是否被截断、简化解码或其他操作的一种错误方式?)。</p>
<p>无论如何,这意味着如果有<code>x</code>base64个字符(无填充),则将有<code>4-(x%4)</code>填充字符。(尽管<code>x%4=1</code>不会因为6和8的因子分解而发生)。由于这些数据不包含实际数据,并且可以恢复,因此当我想节省空间时,我经常删除这些数据,例如:</p>
<pre><code>from base64 import b64encode, b64decode
# encode data
raw = b'\x00\x01'
enc = b64encode(raw).rstrip("=")
# func to restore padding
def repad(data):
return data + "=" * (-len(data)%4)
raw = b64decode(repad(enc))
</code></pre>