IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

fromCharCode avec Uint8Array en paramètre


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 396
    Par défaut fromCharCode avec Uint8Array en paramètre
    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?

  2. #2
    Membre chevronné
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 396
    Par défaut
    Bonsoir,

    Un tour à la plage rafraîchit les idées...

    La méthode fromCharCode() prend habituellement en paramètre une suite de nombres allant de 0 à 65535. Ici elle prend une suite de nombres allant de 0 à 255, représentant des octets. Donc tout va bien. Elle retourne une suite de caractères, éventuellement non imprimables.

    La fonction btoa() prend en paramètre une suite de caractères, éventuellement non imprimables, pour les convertir en une suite d'octets. Elle fait donc l'opération inverse, ce qui est un peu déroutant... Ensuite, elle les présente en Base64.

    Donc les fonctions f1 et f2 fournissent bien des résultats identiques. Utiliser des fonctions toutes faites nécessite d'étudier pour identifier précisément ce qu'elles font.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo