Buffer
對象用于表示固定長度的字節序列。 許多 Node.js API 都支持 Buffer
。
Buffer
?類是 JavaScript 的?Uint8Array
?類的子類,且繼承時帶上了涵蓋額外用例的方法。 只要支持?Buffer
?的地方,Node.js API 都可以接受普通的?Uint8Array
。
Buffer
類在全局作用域中,因此無需使用 require('buffer').Buffer
。
// 創建一個長度為 10、以零填充的 Buffer。
const buf1 = Buffer.alloc(10);
// 創建一個長度為 10 的 Buffer,
// 其中全部填充了值為 `1` 的字節。
const buf2 = Buffer.alloc(10, 1);
// 創建一個長度為 10、且未初始化的 buffer。
// 這個方法比調用 Buffer.alloc() 更快,
// 但返回的 Buffer 實例可能包含舊數據,
// 因此需要使用 fill()、write() 或其他能填充 Buffer 的內容的函數進行重寫。
const buf3 = Buffer.allocUnsafe(10);
// 創建一個包含字節 [1, 2, 3] 的 Buffer。
const buf4 = Buffer.from([1, 2, 3]);
// 創建一個包含字節 [1, 1, 1, 1] 的 Buffer,
// 其中所有條目均使用 `(value & 255)` 進行截斷以符合 0-255 的范圍。
const buf5 = Buffer.from([257, 257.5, -255, '1']);
// 創建一個 Buffer,其中包含字符串 'tést' 的 UTF-8 編碼字節:
// [0x74, 0xc3, 0xa9, 0x73, 0x74](以十六進制表示)
// [116, 195, 169, 115, 116](以十進制表示)
const buf6 = Buffer.from('tést');
// 創建一個包含 Latin-1 字節 [0x74, 0xe9, 0x73, 0x74] 的 Buffer。
const buf7 = Buffer.from('tést', 'latin1');