방법 설명:
새 버퍼 개체를 반환합니다. 이 새 버퍼는 이전 버퍼와 동일한 메모리를 공유합니다.
그러나 시작 및 끝 인덱스 오프셋에 의해 감소됩니다. (예를 들어, 버퍼에 1~10바이트가 있고 4~8바이트만 원하는 경우 buf.slice(4,8) 함수를 사용할 수 있습니다. 동일한 메모리를 공유하므로 메모리를 소비하지 않습니다. ,)
메모리는 공유되기 때문에 새 버퍼를 수정하면 이전 버퍼의 내용도 수정됩니다.
문법:
buffer.slice([시작], [끝])
수신 매개변수:
start 시작 위치, 기본값
end 끝 위치, 기본값은 버퍼 길이입니다
예:
ASCII 알파벳을 사용하여 버퍼를 생성하고 슬라이스 기능을 사용한 다음 원래 버퍼의 바이트를 수정합니다.
var buf1 = 새 버퍼(26);
for (var i = 0 ; i
buf1[i] = i 97; // 97은 ASCII a
}
var buf2 = buf1.slice(0, 3);
console.log(buf2.toString('ascii', 0, buf2.length));
buf1[0] = 33;
console.log(buf2.toString('ascii', 0, buf2.length));
// ABC
// !bc
소스코드:
// TODO(trevnorris): 현재 Array.prototype.slice()처럼 작동합니다.
// 범위를 벗어난 인덱스에 대한 새로운 표준을 따르지 않습니다.
Buffer.prototype.slice = 함수(시작, 끝) {
var len = this.length;
시작 = ~~시작;
end = util.isUndefine(end) ? len : ~~end;
if (시작 < 0) {
시작=len;
If (시작 < 0)
시작 = 0;
} else if (시작 > 길이) {
시작=len;
}
if (end < 0) {
끝 = len;
(끝 < 0)인 경우
종료 = 0;
} else if (end > len) {
끝 = len;
}
if(끝 < 시작)
끝 = 시작;
var buf = new NativeBuffer();
SliceOnto(this, buf, start, end);
buf.length = 끝 - 시작;
if (buf.length > 0)
buf.parent = util.isUndefine(this.parent) ? this : this.parent;
버프를 돌려주세요;
};