Bagaimana menampilkan data Buffer mentah nodejs sebagai string Hex


96

Kode berikut menggunakan modul SerialPort untuk mendengarkan data dari koneksi bluetooth.

Saya mengharapkan untuk melihat aliran data dalam format Heksadesimal dicetak di konsol. Tapi konsol itu hanya menampilkan beberapa simbol aneh. Saya ingin tahu bagaimana cara memecahkan kode dan menampilkan data di konsol.

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
data sudah menjadi buffer, tidak perlu dikonversi. Kemudian: data.toString ('hex');
Laurent Perrin

Jawaban:


209

Kode ini akan menunjukkan buffer data sebagai string hex:

buff.toString('hex');

4
apakah kamu tahu bagaimana melakukan kebalikannya?
bubakazouba

20
bubakazouba: Buffer baru (buf.toString ('hex'), 'hex');
Seryh

2
[DEP0005] DeprecationWarning: Buffer () tidak digunakan lagi karena masalah keamanan dan kegunaan. Silakan gunakan metode Buffer.alloc (), Buffer.allocUnsafe (), atau Buffer.from () sebagai gantinya. Jadi sekarang seharusnyaBuffer.from( buf.toString('hex'),'hex');
flob

Ini kembali untuk saya [object ArrayBuffer]? apa yang salah?
Mamdouh Saeed

-2

Jawaban teratas adalah cara termudah untuk melakukannya.

Metode alternatif:

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

1
Jawaban ini sebenarnya berguna bagi saya, karena saya harus menggabungkannya dengan '-' agar dapat interop dengan C #. Suara positif.
Edza
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.