2016-10-26 43 views
1

我是新來的Node.js,爲什麼緩衝區複製打印我一些垃圾值?

我正在讀的Node.js的緩衝器。

我偶然在buffer.copy方法。

寫了代碼如下所示,

var bufferOne = new Buffer("This is China"); 
var bufferTwo = new Buffer(20), 
    startTarget = 0, 
    sourceStart = 8, 
    sourceEnd = 0; 
var bufferLength = bufferOne.length; 
sourceEnd = bufferLength; 
console.log("Buffer length "+bufferLength); 
bufferOne.copy(bufferTwo,startTarget,sourceStart,sourceEnd); 

console.log("Buffer1 "+bufferOne.toString()); 
console.log("Buffer2 "+bufferTwo.toString()); 

輸出如下,

Buffer length 13 
Buffer1 This is China 
Buffer2 China 

但有時也打印垃圾輸出 「中國製造」 後,如下所示,

Buffer length 13 
Buffer1 This is China 
Buffer2 China���*� 

有時,

Buffer length 13 
Buffer1 This is China 
Buffer2 China��� 

有人可以告訴我發生了什麼事嗎?

+0

我敢肯定那是因爲你太大的緩衝區複製,並最終打印不確定的狀態,這在翻譯垃圾。 – DrakaSAN

回答

0

bufferTwo的長度是20,但你只能複製13個字節。其餘7個字節包含半隨機數據。

文件化here

傳遞一個數作爲第一個參數,以Buffer()(例如new Buffer(10)),分配指定大小的新Buffer對象。分配用於這樣Buffer實例存儲器是初始化並且可以包含敏感數據