Como converter Base64 para decimal
- Cole o Base64 em Entrada · Base64. Espaços, quebras de linha, caracteres URL-safe e preenchimento ausente não são problema.
- Os valores dos bytes aparecem em Saída · Bytes decimais.
- Escolha o Separador abaixo da saída: Espaço,
,,,ou Nova linha. - Use Copiar saída ou Baixar para levar a lista. O seletor Bytes decimais → Base64, ou Decimal para Base64, inverte a conversão.
Exemplos
| Base64 | Bytes decimais | O que é |
|---|---|---|
SGkh | 72 105 33 | o texto Hi! |
SGkh/w== | 72 105 33 255 | Hi! mais um byte 0xff |
AQA= | 1 0 | dois bytes, 256 como número big-endian de 16 bits |
AAAA | 0 0 0 | três bytes zero |
//// | 255 255 255 | três bytes com todos os bits ligados |
fwAAAQ== | 127 0 0 1 | um endereço IPv4, 127.0.0.1, como quatro bytes brutos |
A última linha mostra um uso prático: formatos binários guardam endereços IPv4 como quatro bytes, e a lista decimal é a conhecida forma com pontos, só que sem os pontos.
Valores de byte ou um número grande
Este conversor lista bytes. Ler o valor Base64 inteiro como um único inteiro dá outra resposta, e ela depende da ordem dos bytes: os dois bytes 1 0 valem 256 lidos como número big-endian e 1 lidos como little-endian. Qual está certo depende do formato que gerou os dados, então essa conversão pertence ao código, onde você pode deixar isso explícito:
import base64
data = base64.b64decode("AQA=")
list(data) # [1, 0]
int.from_bytes(data, "big") # 256
int.from_bytes(data, "little") # 1
O mesmo vale para Base64 que guarda um contador de 32 bits, um timestamp ou um ID grande: a lista decimal dá os bytes, e o int.from_bytes ou o DataView em JavaScript dá o número.
Onde listas de bytes decimais são usadas
- JSON. Alguns serializadores escrevem dados binários como um array de números. O
JSON.stringify(Buffer.from("Hi!"))do Node dá{"type":"Buffer","data":[72,105,33]}. Com o separador,e colchetes, você obtém o mesmo formato. - Python e planilhas.
list(b)em Python imprime valores decimais, e uma coluna de números (separador Nova linha) cola direto numa planilha. - Microcontroladores e monitores seriais. Código de Arduino e muitas ferramentas seriais mostram bytes em decimal. Para a declaração de um array tipado em C ou outra linguagem, Base64 para array de bytes escreve o literal completo.
Se você vai ler os bytes em vez de colá-los em algum lugar, hex costuma ser mais claro, porque cada byte tem exatamente dois caracteres: experimente Base64 para hex.
Base64 para decimal no código
import base64
list(base64.b64decode("SGkh/w==")) # [72, 105, 33, 255]
Array.from(Buffer.from("SGkh/w==", "base64")).join(", "); // '72, 105, 33, 255'
Num navegador sem Buffer, Array.from(atob(s), c => c.charCodeAt(0)) dá os mesmos números. As páginas de Python e JavaScript tratam da decodificação com mais profundidade.
Perguntas frequentes
O que significa "decimal" em Base64 para decimal?
Cada byte decodificado escrito como um número comum na base 10. Um byte vai de 0 a 255, então a saída é uma lista de números nessa faixa, um por byte.
Como converter Base64 em um único número em vez de uma lista?
Leia os bytes como um único inteiro no código. Em Python, int.from_bytes(base64.b64decode(s), "big"); para AQA= isso dá 256, enquanto esta página lista os bytes 1 0.
Como obter um array JSON de bytes a partir de Base64?
Defina o Separador como , e coloque o resultado entre colchetes. SGkh vira [72, 105, 33], que é lido como array JSON.
Por que o Java imprime -1 onde esta página mostra 255?
O tipo byte do Java tem sinal, então os bytes de 128 a 255 aparecem como −128 a −1. Os bits são idênticos. Use b & 0xff no Java para obter o valor de 0 a 255 mostrado aqui.