我試圖用緩衝區解析29個字節的數據格式奇怪的方式。我一直在使用slice()方法來分割這些奇怪邊界上的數據。樣本流類似於十六進制中的以下內容(爲清楚起見,添加了空格)...Node.js數據解析與緩衝區的原始字節
01 1d 00 00 01 0a 0a 0b 0b 0c 0c 00 00 04 d2 00 00 00 0e c8 00 00 00 00 00 00 00 cc c4
var raw = '011d0000010a0a0b0b0c0c000004d20000000ec800000000000000ccc4';
buff = new Buffer(raw, 'utf8');
var position = 2;
// message type
var msg_type = buff.slice(position,(position+1)).toString();
position += 1;
console.log('... message type is ' + msg_type);
// event type
var event_type = buff.slice(position,(position+1)).toString();
position += 1;
console.log('... event type is ' + event_type);
// grab more data...
這產生了msg_type = 1和event_type = 0。它應該分別是0和1。接下來的所有切片都是錯誤的。
我很明顯誤解了這裏的編碼。在Buffer實例化過程中或在toString()提取過程中。
如何將此輸入流視爲一系列十六進制字符串並將它們轉換爲可操作的二進制數據?
謝謝!
是否'buff.slice(位置,位置+ 1)'返回單個字符或兩個字符? – sarnold
該緩衝區上的toString()結果是一個字符長。但toString()結果在 - buff.slice(position,position + 6);是12個字符長。 – Greg