Enviar um arquivo
  1. base64hub
  2. Outras bases
  3. Base64 para array de bytes

Base64 para array de bytes em C, Java, Python, Go, C#

Cole o Base64 e receba os bytes decodificados como um literal de array para colar no código-fonte. Escolha a linguagem abaixo da saída: C/C++, JavaScript, Python, Java, Go, C# ou Rust.

Grátis sem cadastro, sem limites Local nada é enviado 7 linguagens, de C a Rust Atualizado 27 de out. de 2026
Entrada 0Bytes 0 BSaída 0

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como converter Base64 em array de bytes

  1. Cole o Base64 na entrada. Espaços em branco, preenchimento ausente, caracteres URL-safe e um prefixo data: são aceitos.
  2. Escolha o destino abaixo da saída em Linguagem: C / C++, JavaScript, Python, Java, Go, C# ou Rust. JavaScript vem selecionado quando a página abre.
  3. Use Copiar saída e cole a declaração no seu código. Renomeie data como preferir.
  4. Os menus De e Para acima da ferramenta trocam o formato de entrada ou de saída, por exemplo para ler hex em vez de Base64.

Para voltar de um array para Base64, use Array de bytes para Base64, que lê todos esses formatos.

O que cada linguagem recebe

O Base64 3q2+7wABAgOAf/8K decodifica para 12 bytes, de ad be ef 00 01 02 03 80 7f ff 0a. Esta é a saída para cada configuração de Linguagem:

const unsigned char data[12] = {
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
};
const data = new Uint8Array([
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
]);
data = b'\xde\xad\xbe\xef\x00\x01\x02\x03\x80\x7f\xff\x0a'
byte[] data = new byte[] {
    -34, -83, -66, -17, 0, 1, 2, 3, -128, 127, -1, 10
};
data := []byte{
	0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a,
}
byte[] data = new byte[] {
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
};
let data: [u8; 12] = [
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
];

Observações sobre a saída:

  • Os arrays quebram a linha a cada 12 valores. O Python escreve 16 bytes por string b'...' e junta dados mais longos entre parênteses, que o Python concatena em tempo de compilação.
  • O Java usa decimais com sinal porque (byte) 0xde exigiria um cast em todo valor acima de 0x7f. -34 e 0xde são os mesmos bits.
  • C e Rust declaram o comprimento. O array em C é unsigned char, então valores acima de 127 cabem sem avisos.
  • O Go recebe uma vírgula depois do último valor. O compilador exige isso quando a chave de fechamento fica numa linha própria.
  • O Python escreve todo byte como \x.., mesmo os imprimíveis, para que o literal seja inequívoco na leitura e no diff.

Embutir os bytes ou manter o Base64?

Um literal de array de bytes faz sentido quando o programa não tem decodificador Base64 ou não deve gastar tempo decodificando: firmware para microcontroladores, fixtures de teste, uma chave ou certificado pequeno compilado num binário, uma tabela de consulta. O custo é o tamanho no arquivo-fonte. Cada byte ocupa cerca de seis caracteres (0xde, ), mais de quatro vezes o Base64, então 10 KB de dados viram uns 60 KB de código.

Para qualquer coisa que muda ou que passa de alguns kilobytes, mantenha a string Base64 e decodifique na inicialização:

import base64
data = base64.b64decode("3q2+7wABAgOAf/8K")
byte[] data = Convert.FromBase64String("3q2+7wABAgOAf/8K");
byte[] data = java.util.Base64.getDecoder().decode("3q2+7wABAgOAf/8K");
const data = Uint8Array.from(atob("3q2+7wABAgOAf/8K"), c => c.charCodeAt(0));

Navegadores mais novos também têm Uint8Array.fromBase64(), explicado em Uint8Array.fromBase64 e toBase64. As páginas de C#, Java, Go, Rust e Python mostram os decodificadores em mais detalhes.

Problemas comuns

  • “Base64 inválido”. A string contém um caractere fora do alfabeto ou foi cortada. A mensagem informa a posição; o validador de Base64 explica o que há de errado com uma string quebrada.
  • Erros de “narrowing conversion” em C++. char data[] = {0xde}; não compila em C++11 ou posterior, porque o char simples tem sinal na maioria das plataformas e 222 não cabe. Mantenha o unsigned char gerado ou use uint8_t.
  • Saída enorme. Para arquivos grandes, xxd -i file.bin imprime um array C direto, e recursos de embutir como o #embed do C23 dispensam o array de vez.

Perguntas frequentes

Como converter uma string Base64 em array de bytes no C#?

Em tempo de execução, byte[] data = Convert.FromBase64String(s);. Para deixar os bytes fixos no código, defina a Linguagem como C# aqui e cole a declaração new byte[] { ... } no seu código-fonte.

Por que o array Java tem números negativos?

O byte do Java tem sinal e vai de −128 a 127. Os bytes de 0x80 a 0xff são escritos como −128 a −1, então 0xde aparece como -34. Os bits são os mesmos; b & 0xff devolve o valor sem sinal.

Como transformar Base64 em bytes no Python?

base64.b64decode(s) devolve um objeto bytes. Defina a Linguagem como Python aqui se quiser esse valor escrito como um literal b'\x..'.

A saída em JavaScript é um Uint8Array?

É, const data = new Uint8Array([...]) com valores em hex. Funciona em navegadores e no Node.js; no Node, você pode envolver com Buffer.from(data) se alguma API precisar de um Buffer.