静态方法: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: 2
const { 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]])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。