Buffer
JavaScript 語言自身只有字符串數據類型,沒有二進制數據類型。但在處理像TCP流或文件流時,必須使用到二進制數據。因此在 Node.js中,定義了一個 Buffer 類,該類用來創建一個專門存放二進制數據的緩存區。
Buffer的結構和數組很像,操作的方法也和數組類似
數組中不能存儲二進制的文件,而buffer就是專門用來存儲二進制數據
使用buffer不需要引入模塊,直接使用即可
在buffer中存儲的都是二進制數據,但是在顯示時都是以16進制的形式顯示
- buffer中每一個元素的範圍是從 ,
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() 將緩衝區中的數據轉換爲字符串