हेक्स स्ट्रिंग के रूप में नोडज रॉ बफ़र डेटा कैसे प्रदर्शित करें


95

निम्न कोड ब्लूटूथ कनेक्शन से डेटा सुनने के लिए SerialPort मॉड्यूल का उपयोग करता है।

मैं कंसोल में मुद्रित हेक्साडेसिमल प्रारूप में डेटा की एक धारा देखने की उम्मीद कर रहा हूं। लेकिन कंसोल सिर्फ कुछ अजीब प्रतीक दिखाता है। मैं जानना चाहता हूं कि मैं कंसोल में डेटा को कैसे डीकोड और प्रदर्शित कर सकता हूं।

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.toString ('हेक्स');
लॉरेंट पेरिन

जवाबों:


207

यह कोड डेटा बफर को हेक्स स्ट्रिंग के रूप में दिखाएगा:

buff.toString('hex');

4
क्या आपको पता है कि रिवर्स कैसे करना है?
बुबाकाज़ौबा

20
bubakazouba: नए बफर (buf.toString ('हेक्स'), 'हेक्स');
सेरही

2
[DEP0005] निक्षेपागार: बफ़र () सुरक्षा और प्रयोज्य मुद्दों के कारण पदावनत किया जाता है। इसके बजाय बफ़र .alloc (), बफ़र .allocUnsafe (), या बफ़र.फ्रॉम () विधियों का उपयोग करें। तो अब यह होना चाहिएBuffer.from( buf.toString('hex'),'hex');
19

यह मेरे लिए लौटता है [object ArrayBuffer]? क्या गलत है?
ममदौह सईद

-2

शीर्ष उत्तर इसका सबसे सरल तरीका है।

एक वैकल्पिक विधि:

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
यह उत्तर वास्तव में मेरे लिए उपयोगी था, क्योंकि मुझे इसके साथ जुड़ने के लिए '-' से जुड़ना है। Upvoted।
एदज़ा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.