So zeigen Sie die Rohdaten des Knotens als Hex-Zeichenfolge an


94

Der folgende Code verwendet das SerialPort-Modul, um Daten von einer Bluetooth-Verbindung abzuhören.

Ich erwarte einen Datenstrom im Hexadezimalformat, der in der Konsole gedruckt wird. Aber die Konsole zeigt nur einige seltsame Symbole. Ich möchte wissen, wie ich die Daten in der Konsole dekodieren und anzeigen kann.

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'); //no sure about this
  console.log('data received: ' + buff.toString());
 });  
});

12
Daten sind bereits ein Puffer, keine Konvertierung erforderlich. Dann: data.toString ('hex');
Laurent Perrin

Antworten:


206

Dieser Code zeigt den Datenpuffer als Hex-Zeichenfolge an:

buff.toString('hex');

4
Weißt du, wie man das Gegenteil macht?
Bubakazouba

20
bubakazouba: neuer Puffer (buf.toString ('hex'), 'hex');
Seryh

2
[DEP0005] DeprecationWarning: Buffer () ist aufgrund von Sicherheits- und Usability-Problemen veraltet. Verwenden Sie stattdessen die Methoden Buffer.alloc (), Buffer.allocUnsafe () oder Buffer.from (). Also jetzt sollte es seinBuffer.from( buf.toString('hex'),'hex');
Flob

-3

Die beste Antwort ist der einfachste Weg, dies zu tun.

Eine alternative Methode:

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('');

Diese Antwort war tatsächlich nützlich für mich, da ich sie mit '-' verbinden muss, damit sie mit C # interopiert. Upvoted.
Edza
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.