不用 Python 的 base64 标准库,如何自己实现一个 Base64 编码函数?

什么是 Base64

Base64 是一种用 64 个可打印字符表示任意二进制数据的编码方法,常用于文本场景下嵌入或传输二进制数据,如邮件附件、HTML 图片等。Base64 不是加密方法。

字符集为 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/,对应 0~63。

Base64 原理

每 3 字节(24 位)数据编码为 4 个 Base64 字符。若数据长度不是 3 的倍数,需用 \x00 补齐,编码后用 = 表示补齐字节数。

  • 剩 1 字节:补 2 字节,编码后末尾 2 个字符为 =
  • 剩 2 字节:补 1 字节,编码后末尾 1 个字符为 =

Python 实现 Base64 编码

chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'

def base64_encode(binary_data: bytes):
    padding_count = 3 - len(binary_data) % 3
    if padding_count == 3:
        padding_count = 0
    encode_data = binary_data + b'\x00' * padding_count

    result = ''
    for index in range(0, len(encode_data), 3):
        piece = encode_data[index:index+3]
        binary_string = bin(int.from_bytes(piece, 'big'))[2:].zfill(24)
        for i in range(0, 24, 6):
            result += chars[int(binary_string[i:i+6], base=2)]

    if padding_count:
        result = result[:-padding_count] + '=' * padding_count

    return result.encode('ascii')

参考链接