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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    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

  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>

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    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

  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.

  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 : 74
    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 ) );

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    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

  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.

+ 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