• target {Buffer|Uint8Array} 要拷贝进的 Buffer 或 [Uint8Array]。
    • targetStart {integer} target 中开始写入之前要跳过的字节数。默认值: 0
    • sourceStart {integer} buf 中开始拷贝的偏移量。默认值: 0
    • sourceEnd {integer} buf 中结束拷贝的偏移量(不包含)。默认值: [buf.length]。
    • 返回: {integer} 拷贝的字节数。

    拷贝 buf 中某个区域的数据到 target 中的某个区域,即使 target 的内存区域与 buf 的重叠。

    [TypedArray#set()] 执行相同的操作,并且可用于所有的 TypedArray,包括 Node.js 的 Buffer,尽管它采用不同的函数参数。

    1. // 创建两个 `Buffer` 实例。
    2. const buf1 = Buffer.allocUnsafe(26);
    3. const buf2 = Buffer.allocUnsafe(26).fill('!');
    4. for (let i = 0; i < 26; i++) {
    5. // 97 是 'a' 的十进制 ASCII 值。
    6. buf1[i] = i + 97;
    7. }
    8. // 拷贝 `buf1` 中第 16 至 19 字节偏移量的数据到 `buf2` 第 8 字节偏移量开始。
    9. buf1.copy(buf2, 8, 16, 20);
    10. // 这等效于:
    11. // buf2.set(buf1.subarray(16, 20), 8);
    12. console.log(buf2.toString('ascii', 0, 25));
    13. // 打印: !!!!!!!!qrst!!!!!!!!!!!!!
    1. // 创建一个 `Buffer`,并拷贝同一 `Buffer` 中一个区域的数据到另一个重叠的区域。
    2. const buf = Buffer.allocUnsafe(26);
    3. for (let i = 0; i < 26; i++) {
    4. // 97 是 'a' 的十进制 ASCII 值。
    5. buf[i] = i + 97;
    6. }
    7. buf.copy(buf, 0, 4, 10);
    8. console.log(buf.toString());
    9. // 打印: efghijghijklmnopqrstuvwxyz