হেক্স স্ট্রিং হিসাবে নোডেজ কাঁচা বাফার ডেটা কীভাবে প্রদর্শন করবেন


96

নীচের কোডটি ব্লুটুথ সংযোগ থেকে ডেটা শুনতে সিরিয়ালপোর্ট মডিউল ব্যবহার করে uses

আমি কনসোলে মুদ্রিত হেক্সাডেসিমাল ফর্ম্যাটে ডেটা প্রবাহ দেখতে প্রত্যাশা করছি। তবে কনসোলটি কিছু অদ্ভুত সিম্বল দেখায়। আমি কীভাবে কনসোলে ডেটা ডিকোড এবং প্রদর্শন করতে পারি তা জানতে চাই।

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
ডেটা ইতিমধ্যে একটি বাফার, রূপান্তর করার প্রয়োজন নেই। তারপরে: ডেটা.টোস্ট্রিং ('হেক্স');
লরেন্ট পেরিন

উত্তর:


209

এই কোডটি হেক্স স্ট্রিং হিসাবে ডেটা বাফারটি প্রদর্শন করবে:

buff.toString('hex');

4
আপনি কি বিপরীত করতে জানেন?
বুবাকজৌবা

20
বুবকাজোবা: নতুন বাফার (buf.toString ('hex'), 'hex');
সেরিহ

4
[DEP0005] অবমূল্যায়ন সতর্কতা: সুরক্ষা এবং ব্যবহারযোগ্যতার সমস্যার কারণে বাফার () অবমূল্যায়ন করা হয়েছে। পরিবর্তে বাফার.অলোক (), বাফার.এলোকউনস্যাফ (), বা বাফার.ফ্রাম () পদ্ধতিগুলি ব্যবহার করুন। সুতরাং এখন এটি হওয়া উচিতBuffer.from( buf.toString('hex'),'hex');
ফ্লব করুন

এটা আমার জন্য ফিরে [object ArrayBuffer]? কোনো সমস্যা?
মামদৌহ সা Saeedদ

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

4
এই উত্তরটি আমার পক্ষে আসলে কার্যকর ছিল, কারণ এটি সি # এর সাথে ইন্টারপ করার জন্য আমাকে '-' এর সাথে যোগ দিতে হবে। উত্সাহিত।
এডজা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.