buf.subarray([start[, end]])
添加於:v3.0.0
參數
start
<integer> 新的Buffer
將從哪裏開始。 默認:0
。end
<integer> 新的Buffer
將在哪裏結束(不包括在內)。 默認:buf.length
- 返回: <Buffer>
返回一個新的 Buffer
,它引用與原始內存相同的內存,但被 start
和 end
索引偏移和裁剪。
指定 end
大於
將返回與 buf.length
end
等於
相同的結果。buf.length
此方法繼承自
。TypedArray.prototype.subarray()
修改新的Buffer
slice 會修改原來Buffer
中的內存,因為兩個對象分配的內存重疊。
import { Buffer } from 'node:buffer'; // Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte // from the original `Buffer`. const buf1 = Buffer.allocUnsafe(26); for (let i = 0; i < 26; i++) { // 97 is the decimal ASCII value for 'a'. buf1[i] = i + 97; } const buf2 = buf1.subarray(0, 3); console.log(buf2.toString('ascii', 0, buf2.length)); // Prints: abc buf1[0] = 33; console.log(buf2.toString('ascii', 0, buf2.length)); // Prints: !bc
const { Buffer } = require('node:buffer'); // Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte // from the original `Buffer`. const buf1 = Buffer.allocUnsafe(26); for (let i = 0; i < 26; i++) { // 97 is the decimal ASCII value for 'a'. buf1[i] = i + 97; } const buf2 = buf1.subarray(0, 3); console.log(buf2.toString('ascii', 0, buf2.length)); // Prints: abc buf1[0] = 33; console.log(buf2.toString('ascii', 0, buf2.length)); // Prints: !bc
指定負索引會導致相對於buf
的結尾而不是開頭生成切片。
import { Buffer } from 'node:buffer'; const buf = Buffer.from('buffer'); console.log(buf.subarray(-6, -1).toString()); // Prints: buffe // (Equivalent to buf.subarray(0, 5).) console.log(buf.subarray(-6, -2).toString()); // Prints: buff // (Equivalent to buf.subarray(0, 4).) console.log(buf.subarray(-5, -2).toString()); // Prints: uff // (Equivalent to buf.subarray(1, 4).)
const { Buffer } = require('node:buffer'); const buf = Buffer.from('buffer'); console.log(buf.subarray(-6, -1).toString()); // Prints: buffe // (Equivalent to buf.subarray(0, 5).) console.log(buf.subarray(-6, -2).toString()); // Prints: buff // (Equivalent to buf.subarray(0, 4).) console.log(buf.subarray(-5, -2).toString()); // Prints: uff // (Equivalent to buf.subarray(1, 4).)
相關用法
- Node.js Buffer buf.swap32()用法及代碼示例
- Node.js Buffer buf.swap64()用法及代碼示例
- Node.js Buffer buf.swap16()用法及代碼示例
- Node.js Buffer buf.slice([start[, end]])用法及代碼示例
- Node.js Buffer buf.writeBigUInt64BE(value[, offset])用法及代碼示例
- Node.js Buffer buf.toString([encoding[, start[, end]]])用法及代碼示例
- Node.js Buffer buf.writeDoubleLE(value[, offset])用法及代碼示例
- Node.js Buffer buf.writeBigInt64LE(value[, offset])用法及代碼示例
- Node.js Buffer buf.keys()用法及代碼示例
- Node.js Buffer buf.writeFloatLE(value[, offset])用法及代碼示例
- Node.js Buffer buf.indexOf(value[, byteOffset][, encoding])用法及代碼示例
- Node.js Buffer buf.readFloatLE([offset])用法及代碼示例
- Node.js Buffer buf.readInt32LE([offset])用法及代碼示例
- Node.js Buffer buf.writeInt8(value[, offset])用法及代碼示例
- Node.js Buffer buf.writeInt32LE(value[, offset])用法及代碼示例
- Node.js Buffer buf.writeIntLE(value, offset, byteLength)用法及代碼示例
- Node.js Buffer buf.values()用法及代碼示例
- Node.js Buffer buf.writeDoubleBE(value[, offset])用法及代碼示例
- Node.js Buffer buf.length用法及代碼示例
- Node.js Buffer buf.byteOffset用法及代碼示例
- Node.js Buffer buf.readUInt32BE([offset])用法及代碼示例
- Node.js Buffer buf.readDoubleLE([offset])用法及代碼示例
- Node.js Buffer buf.writeFloatBE(value[, offset])用法及代碼示例
- Node.js Buffer buf.readBigUInt64LE([offset])用法及代碼示例
- Node.js Buffer buf.readUInt16BE([offset])用法及代碼示例
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 buf.subarray([start[, end]])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。