Encode64/Decode64
Conversao Base64 — codifica binario pra string ASCII segura. Indispensavel pra anexar arquivos em JSON/XML.
Assinatura: Encode64(cBinario) -> cBase64 // Decode64(cBase64) -> cBinario
Retorna: Character
Base64 transforma binario (bytes 0-255) em string ASCII segura (A-Z, a-z, 0-9, +, /, =). Cresce ~33% mas pode ser transmitida em JSON, XML, URL sem corromper.
// Anexar PDF em JSON
cPdf := MemoRead("\spool\nota.pdf")
oJson := JsonObject():New()
oJson["arquivo"] := Encode64(cPdf)
oJson["nome"] := "nota.pdf"
// No outro lado
cPdfRecuperado := Decode64(oJson["arquivo"])
MemoWrite("\import\nota.pdf", cPdfRecuperado)
Pegadinhas
- Cresce ~33% — arquivo de 1MB vira ~1.3MB em base64.
- Padding com = no fim — preservar ou re-encoding quebra.
- Nao confundir com URL encoding — base64 contem +/= que precisam ser URL-encoded em URLs.
- Linhas longas em sistemas que truncam — algumas APIs exigem quebra a cada 76 chars.