帶你三步走了解NodeJS中的Buffer

Buffer

  • JavaScript 語言自身只有字符串數據類型,沒有二進制數據類型。但在處理像TCP流或文件流時,必須使用到二進制數據。因此在 Node.js中,定義了一個 Buffer 類,該類用來創建一個專門存放二進制數據的緩存區。

  • Buffer的結構和數組很像,操作的方法也和數組類似

  • 數組中不能存儲二進制的文件,而buffer就是專門用來存儲二進制數據

  • 使用buffer不需要引入模塊,直接使用即可

  • 在buffer中存儲的都是二進制數據,但是在顯示時都是以16進制的形式顯示

    • buffer中每一個元素的範圍是從00ff00 - ff02550 - 255
var str = "Hello 尚硅谷";
//將一個字符串保存到buffer中
var buf = Buffer.from(str);

console.log(buf.length); //佔用內存的大小
console.log(str.length);//字符串的長度
console.log(buf); // <Buffer 48 65 6c 6c 6f 20 e5 b0 9a e7 a1 85 e8 b0 b7>

創建指定大小Buffer

Buffer的大小一旦確定,則不能修改,Buffer實際上是對底層內存的直接操作

//創建一個10個字節的buffer
var buf2 = Buffer.alloc(10);
var buf3 = Buffer.allocUnsafe(10);	// 返回一個指定大小的 Buffer 實例,但是它不會被初始化,所以它可能包含敏感的數據
console.log(buf2[0]) //只要數字在控制檯或頁面中輸出一定是10進制
console.log(buf2[0].toString(16));	// 轉16進制輸出
console.log(buf2[0].toString(2));	// 轉2進制輸出

var buf4 = Buffer.from("我是一段文本數據");
console.log(buf4.toString());	// 將緩衝區中的數據轉換爲字符串

alloc()與allocUnsafe()區別

  • alloc創建指定空間的內存,並將當前空間裏的數據清空
  • allocUnsafe分配了空間,不會清空數據。(可能會包括之前被使用過的數據)

總結

  • Buffer.from(str) 將一個字符串轉換爲buffer
  • Buffer.alloc(size) 創建一個指定大小的Buffer
  • Buffer.alloUnsafe(size) 創建一個指定大小的Buffer,但是可能包含敏感數據
  • buf.toString() 將緩衝區中的數據轉換爲字符串
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章