Decodex

DECODEX · BASE64 · UTF-8

Preenchimento Base64: o significado de = e ==

Entenda o preenchimento Base64 com f, fo e foo. Confira sequências sem =, comprimentos inválidos e erros de preenchimento parcial.

O = final é preenchimento, não um caractere do texto original. Base64 representa três bytes com quatro caracteres. Um grupo final de um byte precisa de ==; um de dois bytes precisa de = no formato com preenchimento.

Conte bytes, não letras

Cada caractere de dados representa seis bits. Três bytes completam 24 bits e quatro caracteres. Acentos e emojis podem ocupar vários bytes UTF-8: 😀 ocupa quatro bytes e produz 8J+YgA==. A tabela compara entradas de um, dois e três bytes.

Restaurar o preenchimento omitido

Se o formato aceitar entrada sem preenchimento, remova espaços e calcule o comprimento módulo 4. Resto 2: adicione ==; resto 3: adicione =; resto 0: não adicione nada. Resto 1: a sequência está inválida ou truncada e adicionar = não resolve. Confira o formato exigido pela API.

Por que Zg funciona e Zg= falha

O Decodex restaura o preenchimento totalmente omitido de Zg e obtém f. Zg== também é válido. Zg= tem preenchimento parcial e comprimento incorreto, então é rejeitado. A=AA e Zg=== também falham. Não adicione nem remova = repetidamente para esconder um erro de cópia.

Testar este exemplo

TextoUTF-8 bytesBase64Preenchimento
f1Zg====
fo2Zm8==
foo3Zm9v—

Testar este exemplo →

Base64 → UTF-8 · UTF-8 → Base64

Perguntas frequentes

Toda sequência Base64 termina com =?

Não. Quando a quantidade de bytes é múltipla de três, nenhum preenchimento é necessário. Outros protocolos o omitem explicitamente.

Referências

Mais guias de Base64