125 votes

Comment afficher les données brutes Buffer de nodejs sous forme de chaîne hexadécimale

Le code suivant utilise le module SerialPort pour écouter les données d'une connexion Bluetooth.

Je m'attends à voir un flux de données au format hexadécimal imprimé dans la console. Mais la console affiche simplement des symboles étranges. Je veux savoir comment décoder et afficher les données dans la console.

var serialPort = new SerialPort("/dev/tty.EV3-SerialPort", {
  parser: SP.parsers.raw
}, false); // this is the openImmediately flag [default is true]

serialPort.open(function () {
 console.log('open');
 serialPort.on('data', function(data) {
   var buff = new Buffer(data, 'utf8'); //not sure about this
  console.log('data received: ' + buff.toString());
 });  
});

277voto

Seryh Points 2894

Ce code affichera le tampon de données sous forme de chaîne hexadécimale :

buff.toString('hex');

3voto

Omar Taylor Points 37

La meilleure réponse est la manière la plus simple de le faire.

Une méthode alternative :

data = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);

Array.prototype.map.call(new Uint8Array(data),
               x => ('00' + x.toString(16)).slice(-2))
        .join('').match(/[a-fA-F0-9]{2}/g).reverse().join('');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X