buffer
訂閱專欄
Buffer.from(), Buffer.alloc() 都是創建一個buffer, Buffer.from()從字符串或者數組創建一個buffer, Buffer.alloc()是創建一個指定大小的buffer。
用法示例
// 從字符串創建一個buffer
const buffer1 = Buffer.from('regis');
console.log(buffer1);
// 輸出結果
<Buffer 72 65 67 69 73>
// 從一個數組創建一個buffer
const buffer2 = Buffer.from([1, 2, 3, 4]);
console.log(buffer2);
// 輸出結果
<Buffer 01 02 03 04>
// 創建一個長度20的空buffer
const buffer3 = Buffer.alloc(20);
console.log(buffer3);
// 輸出結果
<Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
buffer.writeInt8()
繼續上面的代碼,buffer2的值為
<Buffer 01 02 03 04>
// 向buffer2的buffer中寫入數字12,類型為int8,(int8 只占用兩位),從圖中第1個位置寫入,
buffer2.writeInt8(12, 1);
// 寫入后的結果,與上面比較,只有第1個位置的值換為0c, 其余的值因為沒有寫入數據,所以不變
console.log(buffer2);
<Buffer 01 0c 03 04>
// 向buffer2中寫入數字512,並且寫入位置從第2個位置寫入, 因為是Int16,所以需要占用兩位,512的十六進制數字為 02 00 2*16^2=512
buffer2.writeInt16BE(512, 2);
console.log(buffer2);
// 輸出結果
<Buffer 01 0c 02 00>
// 注意writeInt16BE 與 writeInt16LE的區別
// 高低位的順序不一樣,正好相反, BE的高位在左側, 而LE的高位在右側
buffer2.writeInt16LE(512, 2);
console.log(buffer2);
// 輸出結果
<Buffer 01 0c 00 02>
簡單記錄一下,由於初學,還需要大神指教。