Nodejs ham Buffer verilerini Hex dizesi olarak görüntüleme


96

Aşağıdaki kod, bir bluetooth bağlantısından gelen verileri dinlemek için SerialPort modülünü kullanır.

Konsolda yazdırılan Onaltılık formatta bir veri akışı görmeyi bekliyorum. Ancak konsolda bazı tuhaf semboller görünüyor. Konsolda verilerin kodunu nasıl çözebileceğimi ve görüntüleyebileceğimi bilmek istiyorum.

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
veri zaten bir arabellek, dönüştürmeye gerek yok. Ardından: data.toString ('hex');
Laurent Perrin

Yanıtlar:


209

Bu kod, veri arabelleğini onaltılık bir dizge olarak gösterecektir:

buff.toString('hex');

4
Tersini nasıl yapacağını biliyor musun?
bubakazouba

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

3
[DEP0005] Kullanımdan Kaldırılma Uyarısı: Buffer (), güvenlik ve kullanılabilirlik sorunları nedeniyle kullanımdan kaldırıldı. Lütfen bunun yerine Buffer.alloc (), Buffer.allocUnsafe () veya Buffer.from () yöntemlerini kullanın. Öyleyse şimdi olmalıBuffer.from( buf.toString('hex'),'hex');
flob

Benim için geri [object ArrayBuffer]mi dönüyor ? Sorun nedir?
Memduh Saeed

-2

En iyi cevap, bunu yapmanın en basit yoludur.

Alternatif bir yöntem:

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
Bu cevap aslında benim için yararlı oldu, çünkü C # ile birlikte çalışabilmesi için ona '-' ile katılmam gerekiyor. Olumlu oy verildi.
Edza
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.