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 :

Comment convertir du HEX en string


Sujet :

JavaScript

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 093
    Points : 943
    Points
    943
    Par défaut Comment convertir du HEX en string
    Bonjour,

    J'ai trouvé cette petite fonction qui va me convertir
    1f 11 00 A8

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function Decoder(bytes, port) {
      // Decode an uplink message from a buffer
      // (array) of bytes to an object of fields.
      //https://twitter.com/thethingsntwrk/status/844124313938726913
     
      var nam = (bytes[0] << 8) | bytes[1];
      var value = (bytes[2] << 8) | bytes[3];
      // if (port === 1) decoded.led = bytes[0];
     
      return {
        name:nam,
        value:val
      };
    }
    ce qui va m'affiché
    Je suis pas très bon, mais j'aimerais savoir comment je peux modifier ce code converti ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    7B2273656E736F72223A226E6F6E65227D
    que est l'équivalence de
    {"sensor":"none"}
    et que le code m'affiche
    name:sensor
    value:none
    Je vous remercie pour vos lumière car ce que j'ai essyé de faire, m'affiche de chiffres au lieu de sensor et none.

    Merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Je ne suis pas sûr d'avoir compris ce que tu veux faire.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    <script>
    function toto(valeur)
    {
     var result = '';
     for (var i=0;i<valeur.length;i=i+2)
     {
      var decval = parseInt(valeur.substr(i,2), 16);
      result     = result + String.fromCharCode(decval);
     }
     var a = JSON.parse(result);
     
     for (let attribute in a) 
     {
            var name  = attribute;
      var value = a[attribute];
        }
     
     return "name:"+name+" value:"+value;
    }
    var a = toto('7B2273656E736F72223A226E6F6E65227D');
    alert(a);
    </script>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 093
    Points : 943
    Points
    943
    Par défaut
    Bonjour,
    Merci pour ton aide.

    Pour le moment j'ai juste essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    function Decoder(bytes, port) {
      /*
      // Decode an uplink message from a buffer
      // (array) of bytes to an object of fields.
     
      var name = bytes[0]<<8 | bytes[1];
      var value = bytes[2]<<8 | bytes[3];
      // if (port === 1) decoded.led = bytes[0];
     
      return {
        name:name,
        value:value
      };
      */
      var result = '';
      for (var i=0;i<bytes.length;i=i+2)
      {
        var decval = parseInt(bytes.substr(i,2),16);
        result = result + String.fromCharCode(decval);
      }
      /*
      var a = JSON.parse(result);
      var name;
      var value;
      for (let attribute in a) 
      {
        name  = attribute;
        value = a[attribute];
      }
      */
     
        return {
          value:result
        }
      }
    TTN me retorune ce message d'erreur:
    rpc error: code = Internal desc = Internal error: Decoder threw error: TypeError("'substr' is not a function")
    Il semble que substr n'est pas reconnu
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  4. #4
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Euh. Quand on copie du code on essaie de comprendre ce qu'il fait.. pas une copie au petit bonheur la chance !
    Mon code n'a pas vocation à être intégré au tien.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    @badaze : JSON.parse(result) fait des caprices lorsque result contient des caractères "bizarres".

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    function hex2a( hexx ){
    	let
    		hex = hexx.replace( / /g, '' ).toString(),
    		str = '';
     
    	for ( let i = 0; i < hex.length; i += 2 ){
    		str += String.fromCharCode( parseInt( hex.substr( i, 2 ), 16 ) );
    	}
     
    	return str;
    }
     
    function toHex( str ){
    	let
    		hex = '';
     
    	for( let i = 0; i < str.length; i++ ){
    		hex += '' + str.charCodeAt( i ).toString( 16 );
    	}
     
    	return hex;
    }
     
    console.log( hex2a( "7B 22 73 65 6E 73 6F 72 22 3A 22 6E 6F 6E 65 22 7D" ) );
     
    let
    	str = "lien : www.developpez.com",
    	hex = toHex( str );
     
    console.log( hex );
    console.log( hex2a( hex ) );

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 093
    Points : 943
    Points
    943
    Par défaut
    Voila, j'ai trouvé une solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    function Decoder(bytes, port) {
     
      // if (port === 1) decoded.led = bytes[0];
     
      var str=String.fromCharCode.apply(null,bytes);
      var a = JSON.parse(str);
      var name;
      var value;
      for (var attribute in a) 
      {
        name  = attribute;
        value = a[attribute];
      }
     
      return{
        sensor:name,
        val:value
      };
     
    /*
      var val1=(bytes[0] << 8) | bytes[1];
      var val2=(bytes[2] << 8) | bytes[3];
      
      return{
        val1:val1 / 100,
        val2:val2 / 100
        
      }
      */
    }
    @danielhagnoul
    J'avais pas vu ta réponse avant de poster ma solution.
    Je vais la regarder et comparer mais merci pour ta proposition
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  7. #7
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    @danielhagnoul

    Oui je sais. J'étais parti du principe que les caractères hexa étaient une représentation d'une chaîne json.
    Comme je l'avais précisé je n'étais pas sûr d'avoir compris la demande.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/02/2007, 10h28
  2. Comment convertir un champs en string ?
    Par kalisto95 dans le forum ASP
    Réponses: 2
    Dernier message: 22/09/2005, 13h15
  3. Comment convertir un TChartTitle en string ?
    Par marsupilami34 dans le forum Langage
    Réponses: 4
    Dernier message: 25/07/2005, 15h14
  4. Réponses: 14
    Dernier message: 29/06/2005, 11h22
  5. Réponses: 6
    Dernier message: 14/02/2004, 15h01

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