Comment convertir un tableau d’octets en Base64
- Collez le tableau dans l’entrée. La déclaration complète convient : noms de types, noms de variables, crochets et points-virgules sont ignorés.
- Le Base64 apparaît dans la sortie. Remplissage (=) et Retour à la ligne sous la sortie contrôlent le format.
- Copier la sortie, ou choisissez un autre format dans le menu Vers, comme Hex ou Base64URL.
- Pour retransformer du Base64 en déclaration pour un langage donné, utilisez Base64 en tableau d’octets.
Ce que vous pouvez coller
Chaque ligne ci-dessous donne SGkh, le Base64 des trois octets H, i, ! :
| Langage | Entrée |
|---|---|
| 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] |
| Liste simple | 72, 105, 33 ou 72 105 33 |
Les valeurs peuvent être en décimal, en hex avec 0x, en binaire avec 0b, en octal avec 0o, ou des littéraux de caractères ASCII comme 'H'. Les suffixes de type comme u8, U et L sont ignorés. Les littéraux Python sont lus avec toutes leurs règles d’échappement, y compris \n, \t et les échappements octaux, et plusieurs morceaux b'...' à la suite, comme dans un littéral multiligne entre parenthèses, sont joints.
Octets signés et plages de valeurs
Java n’a pas d’octet non signé : les tableaux affichés depuis Java ou Kotlin contiennent donc des nombres négatifs. Le convertisseur lit −128 à −1 comme les octets 0x80 à 0xff :
| Entrée | Octets | 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== |
Toute valeur supérieure à 255 ou inférieure à −128 arrête la conversion en indiquant la valeur et sa position. Les nombres avec un zéro de tête, comme 072, sont lus comme 72 en décimal et non comme 58 en octal C, ce qui correspond à ce que la plupart des gens veulent dire en collant une liste de valeurs d’octets.
Les formats que cette page ne lit pas
- La sortie console
<Buffer 48 69 21>de Node. Ces valeurs sont en hex sans0x, et le convertisseur les lirait en décimal. Copiez la partie entreBufferet>dans Hex en Base64. - Les chaînes C entre guillemets comme
"Hi!". Utilisez Texte en Base64 pour du texte, ou écrivez les octets sous forme de tableau. - Les objets JSON comme
{"type":"Buffer","data":[72,105,33]}. Collez seulement la partie[72,105,33], ici ou dans Décimal en Base64.
Tableau d’octets en Base64 dans le code
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'
La décomposition passe chaque octet comme un argument distinct : elle échoue donc sur les grands tableaux. Dans Node 24, elle lève Maximum call stack size exceeded quelque part entre 125 000 et 200 000 éléments, et la limite varie selon les moteurs. Pour de gros volumes, Buffer.from(arr).toString("base64") dans Node ou arr.toBase64() dans les navigateurs actuels évitent le problème ; voir Uint8Array.toBase64. Plus de détails pour chaque langage : Java, C#, Python, JavaScript.
FAQ
Comment convertir un byte[] en Base64 en Java ?
java.util.Base64.getEncoder().encodeToString(bytes). Pour vérifier un tableau écrit en dur, collez ici toute la déclaration new byte[] { ... }, casts et valeurs négatives compris.
Puis-je coller un littéral bytes de Python ?
Oui. b'Hi!', b'\x48\x69\x21', les échappements octaux comme \041, bytes([72, 105, 33]) et plusieurs littéraux répartis sur plusieurs lignes fonctionnent tous.
Pourquoi ai-je « ne tient pas dans un octet » ?
Une valeur dépasse 255 ou est inférieure à −128. Souvent, le tableau contient en réalité des entiers 16 ou 32 bits, comme short[] ou int[], qu’il faut d’abord découper en octets dans un ordre des octets choisi.
Les nombres sans 0x sont-ils lus en hex ?
Non. Un 48 seul vaut 48 en décimal. Les valeurs hex ont besoin du préfixe 0x, ou collez-les plutôt dans Hex en Base64, qui lit l’hex sans préfixe.