Buffer

緩存區Buffer:是暫時存放 輸入輸出數據的一段內存node

js只有字符串數據類型,沒有二進制類型數據,在處理TCP+文件流的時候,必須是二進制的數據數組

nodejs中提供了buffer對象來處理二進制數據的操做緩存

一個固定內存分配的全局對象,也就是說放到緩存區中的字節數須要提早明確網絡

 

什麼是字節:編碼

  • 字節(Byte)是計算機存儲時的一種計量單位,一個字節等於8位二進制數
  • 一個位就表明一個0或1,每8個位(bit)組成一個字節(Byte)
  • 字節是經過網絡傳輸信息的單位
  • 一個字節最大值十進制數是255

// 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 );
相關文章
相關標籤/搜索