buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])
-
target
<Buffer> | <Uint8Array> 要复制到的Buffer
或 <Uint8Array>。¥
target
<Buffer> | <Uint8Array> ABuffer
or <Uint8Array> to copy into. -
targetStart
<integer>target
内开始写入的偏移量。默认值:0
。¥
targetStart
<integer> The offset withintarget
at which to begin writing. Default:0
. -
sourceStart
<integer>buf
内开始复制的偏移量。默认值:0
。¥
sourceStart
<integer> The offset withinbuf
from which to begin copying. Default:0
. -
sourceEnd
<integer>buf
内停止复制的偏移量(不包括)。默认值:buf.length
。¥
sourceEnd
<integer> The offset withinbuf
at which to stop copying (not inclusive). Default:buf.length
. -
返回:<integer> 复制的字节数。
¥Returns: <integer> The number of bytes copied.
将数据从 buf
的区域复制到 target
的区域,即使 target
内存区域与 buf
重叠。
¥Copies data from a region of buf
to a region in target
, even if the target
memory region overlaps with buf
.
TypedArray.prototype.set()
执行相同的操作,并且可用于所有 TypedArrays,包括 Node.js Buffer
,尽管它采用不同的函数参数。
¥TypedArray.prototype.set()
performs the same operation, and is available
for all TypedArrays, including Node.js Buffer
s, although it takes
different function arguments.
import { Buffer } from 'node:buffer';
// Create two `Buffer` instances.
const buf1 = Buffer.allocUnsafe(26);
const buf2 = Buffer.allocUnsafe(26).fill('!');
for (let i = 0; i < 26; i++) {
// 97 is the decimal ASCII value for 'a'.
buf1[i] = i + 97;
}
// Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`.
buf1.copy(buf2, 8, 16, 20);
// This is equivalent to:
// buf2.set(buf1.subarray(16, 20), 8);
console.log(buf2.toString('ascii', 0, 25));
// Prints: !!!!!!!!qrst!!!!!!!!!!!!!
const { Buffer } = require('node:buffer');
// Create two `Buffer` instances.
const buf1 = Buffer.allocUnsafe(26);
const buf2 = Buffer.allocUnsafe(26).fill('!');
for (let i = 0; i < 26; i++) {
// 97 is the decimal ASCII value for 'a'.
buf1[i] = i + 97;
}
// Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`.
buf1.copy(buf2, 8, 16, 20);
// This is equivalent to:
// buf2.set(buf1.subarray(16, 20), 8);
console.log(buf2.toString('ascii', 0, 25));
// Prints: !!!!!!!!qrst!!!!!!!!!!!!!
import { Buffer } from 'node:buffer';
// Create a `Buffer` and copy data from one region to an overlapping region
// within the same `Buffer`.
const buf = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 is the decimal ASCII value for 'a'.
buf[i] = i + 97;
}
buf.copy(buf, 0, 4, 10);
console.log(buf.toString());
// Prints: efghijghijklmnopqrstuvwxyz
const { Buffer } = require('node:buffer');
// Create a `Buffer` and copy data from one region to an overlapping region
// within the same `Buffer`.
const buf = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 is the decimal ASCII value for 'a'.
buf[i] = i + 97;
}
buf.copy(buf, 0, 4, 10);
console.log(buf.toString());
// Prints: efghijghijklmnopqrstuvwxyz