kikit
6/30/2016 - 7:31 PM

Buffers in NodeJS // v0.12.15

Buffers in NodeJS // v0.12.15

// Buffer.isEncoding(encoding)
console.log(Buffer.isEncoding("base64"));

// Buffer.isBuffer(obj)
var buff = new Buffer("This is string", "utf8");
console.log(Buffer.isBuffer(buff));

// Buffer.byteLength(string[, encoding])
var str = '\u00bd + \u00bc = \u00be';
console.log(str + " : " + str.length + " characters | " + Buffer.byteLength(str, "utf8") + " bytes");

// Buffer.concat(list[, totalLength])
var buff1 = new Buffer("Jumping");
var buff2 = new Buffer("Jupang");
var buffSpace = new Buffer(1);
buffSpace[0] = "32";
var newBuff = Buffer.concat([buff1, buffSpace, buff2], (buff1.length + buff2.length + buffSpace.length));
console.log(newBuff.toString());

// Buffer.compare(buf1, buf2)
var arr = [Buffer('1234'), Buffer('0123')];
console.log(arr.toString());
arr.sort(Buffer.compare);
console.log(arr.toString());

// buf.write(string[, offset][, length][, encoding])
var buf = new Buffer(256);
var len = buf.write('\u00bd + \u00bc = \u00be', 0);
console.log(len + " bytes: " + buf.toString('utf8', 0, len));

// buf.toString([encoding][, start][, end]
var buff4 = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
  buff4[i] = i + 97; // 97 is ASCII a
}
console.log(buff4.toString('ascii')); // outputs: abcdefghijklmnopqrstuvwxyz
console.log(buff4.toString('ascii',0,5)); // outputs: abcde
console.log(buff4.toString('utf8',0,5)); // outputs: abcde
console.log(buff4.toString(undefined,0,5)); // encoding defaults to 'utf8', outputs abcde

// buf.toJSON()
var buff5 = new Buffer("test");
var json = JSON.stringify(buff5);
var json2 = buff5.toJSON();

console.log(json);
console.log(json2);

var copy = JSON.parse(json, function(key, value){
    return value && value.type === 'Buffer'
        ? new Buffer(value.data)
        : value;
});
console.log(copy.toString());

// buf[index]
var strr = "Node.js";
var buff6 = new Buffer(strr.length);

for(var j=0; j<strr.length; j++){
    buff6[j] = strr.charCodeAt(j);
}

console.log(buff6.toString());
// new Buffer(size);
var buff = new Buffer(10);
buff.fill(0);
console.log(buff);

// new Buffer(array)
var buff1 = new Buffer([ 86, 67, 74, 51, 37, 0, 91]);
console.log(buff1);
console.log(buff1.toString());

// new Buffer(buffer)
buff.write("Vijay");
var buff2 = new Buffer(buff);
console.log(buff2.toString());

// new Buffer(str[, encoding])
var buff3 = new Buffer("This is string", "utf8");
console.log(buff3.toString());
// https://nodejs.org/dist/v0.12.15/docs/api/buffer.html

// Slicing a buffer

var buff = new Buffer("This is parent buffer");
var childBuff = buff.slice(8, 16);
console.log(buff.toString());
console.log(childBuff.toString());

buff[8] = "99";
console.log(buff.toString());
console.log(childBuff.toString());


// Copying a buffer
var buff1 = new Buffer("This is parent buffer");
var buff2 = new Buffer(8);

var targetStart = 0;
var sourceStart = 8;
var sourceEnd = 16;

buff1.copy(buff2, targetStart, sourceStart, sourceEnd);
console.log(buff1.toString("utf8"));
console.log(buff2.toString());

buff1[8] = "99";
console.log(buff1.toString());
console.log(buff2.toString());