>웹 프론트엔드 >JS 튜토리얼 >node.js_node.js에서 buffer.slice 메소드를 사용하기 위한 지침

node.js_node.js에서 buffer.slice 메소드를 사용하기 위한 지침

WBOY
WBOY원래의
2016-05-16 16:27:451490검색

방법 설명:

새 버퍼 개체를 반환합니다. 이 새 버퍼는 이전 버퍼와 동일한 메모리를 공유합니다.

그러나 시작 및 끝 인덱스 오프셋에 의해 감소됩니다. (예를 들어, 버퍼에 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;
버프를 돌려주세요;
};
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.