靜態方法:Buffer.from(arrayBuffer[, byteOffset[, length]])
添加於:v5.10.0
參數
arrayBuffer<ArrayBuffer> | <SharedArrayBuffer> 一個,ArrayBuffer,例如SharedArrayBuffer的TypedArray.buffer屬性。byteOffset<integer> 要公開的第一個字節的索引。 默認:0。length<integer> 要公開的字節數。 默認:arrayBuffer.byteLength - byteOffset。
這將創建  的視圖,而無需複製底層內存。例如,當傳遞對 ArrayBuffer   實例的 TypedArray .buffer 屬性的引用時,新創建的 Buffer 將與   的底層 TypedArray ArrayBuffer 共享相同的分配內存。
import { Buffer } from 'node:buffer'; const arr = new Uint16Array(2); arr[0] = 5000; arr[1] = 4000; // Shares memory with `arr`. const buf = Buffer.from(arr.buffer); console.log(buf); // Prints: <Buffer 88 13 a0 0f> // Changing the original Uint16Array changes the Buffer also. arr[1] = 6000; console.log(buf); // Prints: <Buffer 88 13 70 17>const { Buffer } = require('node:buffer'); const arr = new Uint16Array(2); arr[0] = 5000; arr[1] = 4000; // Shares memory with `arr`. const buf = Buffer.from(arr.buffer); console.log(buf); // Prints: <Buffer 88 13 a0 0f> // Changing the original Uint16Array changes the Buffer also. arr[1] = 6000; console.log(buf); // Prints: <Buffer 88 13 70 17>
可選的 byteOffset 和 length 參數指定 arrayBuffer 中將由 Buffer 共享的內存範圍。
import { Buffer } from 'node:buffer'; const ab = new ArrayBuffer(10); const buf = Buffer.from(ab, 0, 2); console.log(buf.length); // Prints: 2const { Buffer } = require('node:buffer'); const ab = new ArrayBuffer(10); const buf = Buffer.from(ab, 0, 2); console.log(buf.length); // Prints: 2
如果 arrayBuffer 不是   或 ArrayBuffer   或適用於 SharedArrayBuffer Buffer.from() 變體的其他類型,則會拋出 TypeError。
請務必記住,支持ArrayBuffer 可以覆蓋超出TypedArray 視圖邊界的內存範圍。使用 TypedArray 的 buffer 屬性創建的新 Buffer 可能會超出 TypedArray 的範圍:
import { Buffer } from 'node:buffer'; const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements console.log(arrA.buffer === arrB.buffer); // true const buf = Buffer.from(arrB.buffer); console.log(buf); // Prints: <Buffer 63 64 65 66>const { Buffer } = require('node:buffer'); const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements console.log(arrA.buffer === arrB.buffer); // true const buf = Buffer.from(arrB.buffer); console.log(buf); // Prints: <Buffer 63 64 65 66>
相關用法
- Node.js Buffer.from(array)用法及代碼示例
 - Node.js Buffer.from()用法及代碼示例
 - Node.js Buffer.from(object[, offsetOrEncoding[, length]])用法及代碼示例
 - Node.js Buffer.from(string[, encoding])用法及代碼示例
 - Node.js Buffer.from(buffer)用法及代碼示例
 - Node.js Buffer.fill()用法及代碼示例
 - Node.js Buffer.writeInt16BE()用法及代碼示例
 - Node.js Buffer.writeDoubleBE()用法及代碼示例
 - Node.js Buffer.entries()用法及代碼示例
 - Node.js Buffer.writeUInt16LE()用法及代碼示例
 - Node.js Buffer.allocUnsafe()用法及代碼示例
 - Node.js Buffer.byteLength()用法及代碼示例
 - Node.js Buffer.isBuffer()用法及代碼示例
 - Node.js Buffer.writeUInt32BE()用法及代碼示例
 - Node.js Buffer.equals()用法及代碼示例
 - Node.js Buffer.values()用法及代碼示例
 - Node.js Buffer.isEncoding()用法及代碼示例
 - Node.js Buffer.isEncoding(encoding)用法及代碼示例
 - Node.js Buffer.concat(list[, totalLength])用法及代碼示例
 - Node.js Buffer.subarray()用法及代碼示例
 - Node.js Buffer.writeDoubleLE()用法及代碼示例
 - Node.js Buffer.includes()用法及代碼示例
 - Node.js Buffer.readInt32BE()用法及代碼示例
 - Node.js Buffer.writeIntLE()用法及代碼示例
 - Node.js Buffer.swap16()用法及代碼示例
 
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 Buffer.from(arrayBuffer[, byteOffset[, length]])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
