node基礎_ Buffer(緩衝區)
阿新 • • 發佈:2022-03-22
buffer緩衝區:
buffer的結構和陣列很像,操作的方法也和陣列類似。
陣列中不能存二進位制的檔案,而buffer就是專門用來儲存二進位制的資料。
使用buffer不需要引入模組,直接使用即可。
在buffer中儲存的都是二進位制資料,但是在顯示時都是以16進位制顯示的。(gbk編碼下1個漢字佔兩個位元組,utf下佔用3個位元組)。
buffer陣列中的每個元素的範圍都是00-ff。即:0-255。因為255是11111111,所以256則操過了這個數值大小了。
計算機中,一個0或者一個1我們稱為一個二進位制位(位元位)
8個二進位制位(bit)稱為1個位元組(Byte)。
buffer陣列中的一個元素,佔用的就是記憶體的1個位元組。
buffer的大小一旦確定,則不能修改,buffer實際上是對底層記憶體的直接操作,也就是宣告一片連續的記憶體空間給這個陣列,如果進行長度改變,那麼後面的連續的記憶體空間可能是已經被別的陣列佔用了。
從結構上看Buffer非常像一個數組,它的元素為16進位制的兩位數。
實際上一個元素就表示記憶體中的一個位元組。
實際上Buffer中的記憶體不是通過JavaScript分配的,而是在底層通過C++申請的。
也就是我們可以直接通過Buffer來建立記憶體中的空間。
Buffer的操作
使用Buffer儲存字串
let str = "hello world";
let buf = Buffer.from(str , "utf-8");
建立指定大小的Buffer物件
let bufferArray2= Buffer.alloc(1024);
//賦值
bufferArray2[0]=0xaa;