1. #1
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 450
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 450
    Points : 774
    Points
    774

    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 éprouvé Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    septembre 2002
    Messages
    742
    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 : 742
    Points : 1 165
    Points
    1 165

    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
    2 450
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 450
    Points : 774
    Points
    774

    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 éprouvé Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    septembre 2002
    Messages
    742
    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 : 742
    Points : 1 165
    Points
    1 165

    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
    5 703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

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

    Informations forums :
    Inscription : février 2009
    Messages : 5 703
    Points : 21 041
    Points
    21 041
    Billets dans le blog
    39

    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



    Nota bene : si vous devez être compatible avec les navigateurs obsolètes (IE8 et plus), vous devez convertir les codes ES2015 en ES5 avec Babel.

    FAQ JS Tutoriels JS

    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
    2 450
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 450
    Points : 774
    Points
    774

    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 éprouvé Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    septembre 2002
    Messages
    742
    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 : 742
    Points : 1 165
    Points
    1 165

    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, 09h28
  2. Comment convertir un champs en string ?
    Par kalisto95 dans le forum ASP
    Réponses: 2
    Dernier message: 22/09/2005, 12h15
  3. Comment convertir un TChartTitle en string ?
    Par marsupilami34 dans le forum Langage
    Réponses: 4
    Dernier message: 25/07/2005, 14h14
  4. Réponses: 14
    Dernier message: 29/06/2005, 10h22
  5. Réponses: 6
    Dernier message: 14/02/2004, 14h01

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