2017-03-29 3 views
0

arraybufferのスライスでバッファを複製しようとしていますが、結果バッファに間違った値が含まれています。次に例を示します。TypedArrayの場合node.jsが異常な動作をバッファにする

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

私が最初に予想されるようにすべての作品:だから

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

今の私が知りたいですそのような「異なる行動」の原因は何か。

答えて

1

内部バッファにアクセスして値を読み取っているようです。このように値にアクセスしてみてください:エラーが生成されますどのように2つの可能なケースがあります

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. robertKlepは、ことを示唆していますbufferのプロパティが内部的に初期化されていない

いずれの場合も、そのプロパティにアクセスするとエラーが発生したようです。

+0

あなた自身を試しましたか? – robertklep

+0

私のデバッガは "数字リテラル"と言います。 – Psi

+0

しかし、実際に試しましたか? – robertklep

関連する問題