Cómo convertir un array de bytes a Base64
- Pega el array en la entrada. Sirve la declaración completa: los nombres de tipo, los nombres de variable, los corchetes y los punto y coma se ignoran.
- El Base64 aparece en la salida. Relleno (=) y Ajuste de línea, bajo la salida, controlan el formato.
- Usa Copiar salida, o cambia el menú A a otro formato, como Hex o Base64URL.
- Para convertir Base64 de nuevo en una declaración para el lenguaje que elijas, usa Base64 a array de bytes.
Qué puedes pegar
Cada línea de abajo da SGkh, el Base64 de los tres bytes H, i, !:
| Lenguaje | Entrada |
|---|---|
| C, C++ | unsigned char d[] = {0x48, 0x69, 0x21}; |
| JavaScript | new Uint8Array([72, 105, 33]), Uint8Array.from([72, 105, 33]), Buffer.from([72, 105, 33]) |
| Python | b'Hi!', b'\x48\x69\x21', bytes([72, 105, 33]), bytearray(b'Hi!') |
| Java | new byte[]{72, 105, 33}, casts (byte) 0x48 |
| Go | []byte{0x48, 0x69, 0x21} |
| C# | new byte[] { 0x48, 0x69, 0x21 } |
| Rust | [0x48u8, 0x69, 0x21], vec![72u8, 105, 33] |
| Lista simple | 72, 105, 33 o 72 105 33 |
Los valores pueden ser decimales, hex con 0x, binarios con 0b, octales con 0o o literales de carácter ASCII como 'H'. Los sufijos de tipo como u8, U y L se ignoran. Los literales de Python se leen con todas sus reglas de escape, incluidos \n, \t y los escapes octales, y varias piezas b'...' seguidas, como en un literal de varias líneas entre paréntesis, se unen.
Bytes con signo y rangos de valores
Java no tiene byte sin signo, así que los arrays impresos desde Java o Kotlin contienen números negativos. El convertidor lee de −128 a −1 como los bytes 0x80 a 0xff:
| Entrada | Bytes | Base64 |
|---|---|---|
{72, 105, -1} | 48 69 ff | SGn/ |
new byte[]{72, 105, (byte) 0xff, -1} | 48 69 ff ff | SGn//w== |
[-34, -83, -66, -17] | de ad be ef | 3q2+7w== |
Cualquier valor por encima de 255 o por debajo de −128 detiene la conversión e indica el valor y su posición. Los números con un cero inicial, como 072, se leen como el decimal 72, no como el octal 58 de C, que es lo que casi todo el mundo quiere decir al pegar una lista de valores de bytes.
Formatos que esta página no lee
- La salida de consola
<Buffer 48 69 21>de Node. Esos valores son hex sin0x, y el convertidor los leería como decimales. Copia lo que hay entreBuffery>en Hex a Base64. - Cadenas de C entre comillas como
"Hi!". Usa Texto a Base64 para texto, o escribe los bytes como un array. - Objetos JSON como
{"type":"Buffer","data":[72,105,33]}. Pega solo la parte[72,105,33], aquí o en Decimal a Base64.
Array de bytes a Base64 en código
String b64 = java.util.Base64.getEncoder().encodeToString(new byte[] {72, 105, 33}); // "SGkh"
string b64 = Convert.ToBase64String(new byte[] { 0x48, 0x69, 0x21 }); // "SGkh"
import base64
base64.b64encode(bytes([72, 105, 33])).decode() # 'SGkh'
btoa(String.fromCharCode(...new Uint8Array([72, 105, 33]))); // 'SGkh'
El operador de propagación pasa cada byte como un argumento distinto, así que falla con arrays grandes: en Node 24 lanza Maximum call stack size exceeded en algún punto entre 125 000 y 200 000 elementos, y el límite varía según el motor. Para datos grandes, Buffer.from(arr).toString("base64") en Node o arr.toBase64() en los navegadores actuales evitan el problema; consulta Uint8Array.toBase64. Más sobre cada lenguaje: Java, C#, Python, JavaScript.
Preguntas frecuentes
¿Cómo convierto un byte[] a Base64 en Java?
java.util.Base64.getEncoder().encodeToString(bytes). Para comprobar un array escrito en el código, pega aquí la declaración completa new byte[] { ... }, con casts y valores negativos incluidos.
¿Puedo pegar un literal bytes de Python?
Sí. Funcionan b'Hi!', b'\x48\x69\x21', escapes octales como \041, bytes([72, 105, 33]) y varios literales repartidos en distintas líneas.
¿Por qué me sale "no cabe en un byte"?
Hay un valor por encima de 255 o por debajo de −128. A menudo el array es en realidad de enteros de 16 o 32 bits, como short[] o int[], que antes hay que dividir en bytes con un orden de bytes concreto.
¿Los números sin 0x se leen como hex?
No. Un 48 sin más es el decimal 48. Los valores hex necesitan el prefijo 0x; si no lo llevan, pégalos en Hex a Base64, que lee hex sin prefijo.