2016-10-26 82 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实例存储器是初始化并且可以包含敏感数据