Bonjour,

Je souhaite qu'une suite quelconque d'octets contenu dans un tableau Uint8Array soit convertie en Base64. Initialement, j'ai écrit la fonction ci-dessous, testée avec Firefox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
f1=function(tab) {
  var base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var bin="", b64="";
  for (var octet of tab) bin+=octet.toString(2).padStart(8, "0");
  for (var i=0; i<bin.length; i+=6) b64+=base64[parseInt(bin.slice(i, i+6).padEnd(6, "0"), 2)];
  b64+="=".repeat((3-(tab.length%3))%3);
  return b64;
};
Puis en lisant des codes récupérés de-ci de-là, j'ai trouvé une autre fonction donnant le même résultat, testée également avec Firefox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
f2=function(tab) { return btoa(String.fromCharCode(...tab)); };
Je me suis donc documenté sur la méthode fromCharCode(). Elle prend normalement en paramètre une suite de nombres représentant du texte encodé en utf-16. Il n'est pas indiqué qu'elle puisse prendre en paramètre un tableau Uint8Array!!!
https://developer.mozilla.org/en-US/...g/fromCharCode

Qu'en pensez-vous? Laquelle des deux fonctions a la meilleure compatibilité avec les divers navigateurs?