buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])
target
<Buffer> | <Uint8Array> 要复制到的Buffer
或Uint8Array
。targetStart
<integer>target
内开始写入的偏移量。 默认值:0
。sourceStart
<integer>buf
内开始复制的偏移量。 默认值:0
。sourceEnd
<integer>buf
内停止复制的偏移量(不包括)。 默认值:buf.length
.- 返回: <integer> 复制的字节数。
将数据从 buf
的区域复制到 target
的区域,即使 target
内存区域与 buf
重叠。
TypedArray.prototype.set()
执行相同的操作,可用于所有 TypedArray,包括 Node.js Buffer
,尽管它采用不同的函数参数。
// 创建两个 `Buffer` 实例。
const buf1 = Buffer.allocUnsafe(26);
const buf2 = Buffer.allocUnsafe(26).fill('!');
for (let i = 0; i < 26; i++) {
// 97 是 'a' 的十进制 ASCII 值。
buf1[i] = i + 97;
}
// 将 `buf1` 字节 16 到 19 复制到 `buf2` 中,从 `buf2` 的字节 8 开始。
buf1.copy(buf2, 8, 16, 20);
// 这相当于:
// buf2.set(buf1.subarray(16, 20), 8);
console.log(buf2.toString('ascii', 0, 25));
// 打印: !!!!!!!!qrst!!!!!!!!!!!!!
// 创建 `Buffer` 并将数据从一个区域复制到同一 `Buffer` 内的重叠区域。
const buf = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 是 'a' 的十进制 ASCII 值。
buf[i] = i + 97;
}
buf.copy(buf, 0, 4, 10);
console.log(buf.toString());
// 打印: efghijghijklmnopqrstuvwxyz
target
<Buffer> | <Uint8Array> ABuffer
orUint8Array
to copy into.targetStart
<integer> The offset withintarget
at which to begin writing. Default:0
.sourceStart
<integer> The offset withinbuf
from which to begin copying. Default:0
.sourceEnd
<integer> The offset withinbuf
at which to stop copying (not inclusive). Default:buf.length
.- Returns: <integer> The number of bytes copied.
Copies data from a region of buf
to a region in target
, even if the target
memory region overlaps with buf
.
TypedArray.prototype.set()
performs the same operation, and is available
for all TypedArrays, including Node.js Buffer
s, although it takes
different function arguments.
// 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!!!!!!!!!!!!!
// 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