簡體   English   中英

node.js緩沖奇怪的行為

[英]node.js buffer strange behavior

我正在嘗試使用其arraybuffer的slice復制一個緩沖區,但是結果緩沖區包含錯誤的值。 這是示例:

var sourceBuf = new Buffer(1);
sourceBuf.writeUInt8(1, 0);
var slice = sourceBuf.buffer.slice(0,1);
var resultBuf = new Buffer(slice);
console.log(resultBuf.readUInt8(0));

輸出118

在TypedArray的情況下,所有功能都如我最初預期的那樣:

var sourceBuf = new Uint8Array(1);
sourceBuf[0] = 1;
var slice = sourceBuf.buffer.slice(0,1);
var resultBuf = new Uint8Array(slice);
console.log(resultBuf[0]);

輸出1

因此,現在我想知道是什么原因導致了這種“不同行為”。

您似乎正在訪問內部緩沖區並讀取該值。 嘗試像這樣訪問值:

var sourceBuf = new Buffer(1);
sourceBuf.writeUInt8(1, 0);
var slice = sourceBuf.slice(0,1); // Changed this line
var resultBuf = new Buffer(slice);
console.log(resultBuf.readUInt8(0));

關於錯誤如何產生的兩種可能的情況:

  1. 原始緩沖區中的二進制值被錯誤地解釋
  2. robertKlep建議buffer屬性在內部未初始化

無論哪種方式,訪問該屬性似乎都是錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM