缓存区Buffer:是暂时存放 输入输出数据的一段内存node
js只有字符串数据类型,没有二进制类型数据,在处理TCP+文件流的时候,必须是二进制的数据数组
nodejs中提供了buffer对象来处理二进制数据的操做缓存
一个固定内存分配的全局对象,也就是说放到缓存区中的字节数须要提早明确网络
什么是字节:编码
// utf-8中:一个汉字占3个字节 24位spa
// 数组里存的是地址 而不是具体的值code
eg:对象
var a = [ 1 , 2 ];内存
var arr = [ a , 1 , 2 ];utf-8
var newarr = arr.slice(0);
a[0] = 100;
consoe.log( arr ) // [ [ 100 , 2 ] , 1 , 2 ]
----------------------------------------------------------------------------------------
// global.Buffer console.log(Buffer)
// buffer能够转成字符串
buffer 是固定大小,定义好大小后不可更改 new Buffer(6)
1个字节等于8个二进制位 8 bit = 1 byte , 1个位表明一个0或者1
//任意进制转十进制
console.log(parseInt("11111111",2)); // 二进制转十进制
console.log(parseInt("255",10)); // 十进制转十进制
console.log(parseInt("0xff",16)); // 十六进制转十进制
//十进制转任意进制
var x = 3;
var y = 5;
var d = 8;
x.toString(2); //十进制转2进制
y.toString(16); //十进制16进制
d.toString(32); //十进制转32进制
console.log(x+"----"+y+"----"+d);
// 建立 new Buffer(size)
var buf1 = new Buffer(6); //指定buffer的长度 长度不能超过255 , 256的话就取256的模
console.log(buf1);
buf1[0] = 0; //
buf1.fill(0); // 清空buffer
console.log(buf1);
// 数组建立 new Buffer(arr)
// 数组里必定放的是一个数字,范围在0~255之间
var buf2 = new Buffer([1,2,3]);
console.log("new一个数组:");
console.log(buf2);
// 字符串建立
// new Buffer(str , [encoding]);
var buf3 = new Buffer("abc"); //97 98 99 默认 utf8 编码
console.log( buf3 );
//字符集:多个字符的集合,常见字符集名称:ASCII字符集、GB2312字符集、Unicode字符集
//编码:是字符集在计算机中存储的方式 ,定义如何去存储字符集。eg:utf-8
/*-----------------*/
var buf1 = new Buffer("小");
var buf2 = new Buffer("陌");
var res = new Buffer(6);
// 合并buffer
Buffer.concat( [buf1,buf2], [buf1,buf2].length );
// 复制buffer
//Buffer.copy( targetBuffer , targetstart , sourcestart , courceend );
buf1.copy(res,0,0,3);
buf2.copy(res,3,0,3);
console.log(res.toString());
//判断是不是对象
var t = Buffer.isBuffer(buf1);
console.log( "判断是不是对象: "+ t );
// 获取字符的长度var s = "我是小米";console.log(s.length);var by = Buffer.byteLength(s);console.log( "获取字符的长度: "+ by );