>웹 프론트엔드 >프런트엔드 Q&A >Node.js 클래식 기술 버퍼(요약 공유)

Node.js 클래식 기술 버퍼(요약 공유)

WBOY
WBOY앞으로
2022-02-18 17:31:242316검색

이 기사에서는 nodejs의 Buffer에 대한 관련 지식을 제공합니다. Node.js에서 Buffer 클래스는 Node 커널과 함께 출시된 핵심 라이브러리입니다. Buffer 라이브러리는 Node.js 데이터 메서드에 기본 저장 메서드를 제공합니다. 모두에게 도움이 될 것입니다.

Node.js 클래식 기술 버퍼(요약 공유)

JavaScript 언어 자체에는 바이너리 데이터 유형이 아닌 문자열 데이터 유형만 있습니다.

그러나 TCP나 파일 스트림과 같은 스트림을 처리할 때는 바이너리 데이터를 사용해야 합니다. 따라서 Node.js에서는 바이너리 데이터를 저장하기 위한 버퍼 영역을 생성하는 데 사용되는 Buffer 클래스가 정의됩니다.

Node.js에서 Buffer 클래스는 Node 커널과 함께 출시된 핵심 라이브러리입니다. Buffer 라이브러리는 Node.js에 원시 데이터를 저장하는 방법을 제공하여 Node.js가 바이너리 데이터를 처리할 수 있도록 합니다. Node.js에서 I/O 작업 중에 이동된 데이터를 처리해야 할 때마다 Buffer 라이브러리를 사용할 수 있습니다.

원본 데이터는 Buffer 클래스의 인스턴스에 저장됩니다.

버퍼는 정수 배열과 유사하지만 V8 힙 메모리 외부의 원시 메모리 조각에 해당합니다.

Buffer 클래스 만들기

Node Buffer 클래스는 다양한 방법으로 만들 수 있습니다.

방법 1

길이가 10바이트인 Buffer 인스턴스 생성:

var buf = new Buffer(10);

방법 2

지정된 배열에서 Buffer 인스턴스 생성:

var buf = new Buffer([10, 20, 30, 40, 50]);

방법 3

문자열 전달 만들기 버퍼 인스턴스:

var buf = new Buffer("bianchengsanmei", "utf-8");

utf-8은 기본 인코딩이며 "ascii", "utf8", "utf16le", "ucs2", "base64" 및 "hex" 인코딩도 지원합니다.

Write buffer

Syntax

Node 버퍼 작성 구문은 다음과 같습니다.

buf.write(string[, offset[, length]][, encoding])

Parameters

매개변수 설명은 다음과 같습니다.

  • string - 버퍼에 기록되는 문자열입니다.
  • offset - 버퍼 쓰기가 시작되는 인덱스 값, 기본값은 0 입니다.
  • length - 쓴 바이트 수, 기본값은 buffer.length
  • encoding - 인코딩이 사용됩니다. 기본값은 'utf8' 입니다.

반환 값

실제 작성된 크기를 반환합니다. 버퍼 공간이 부족하면 문자열의 일부만 기록됩니다.
Instance

buf = new Buffer(256);len = buf.write("bi");len = buf.write("bianchengsanmei");
 console.log("写入字节数 : "+  len);

위 코드를 실행하면 출력 결과는 다음과 같습니다.

$node main.js
写入字节数 : 15

버퍼에서 데이터 읽기

Syntax

노드 버퍼 데이터를 읽는 구문은 다음과 같습니다.

buf.toString([encoding[,start[,end]]])

Parameters

매개변수는 다음과 같이 설명됩니다.

  • encoding - 사용된 인코딩입니다. 기본값은 'utf8' 입니다.

  • start - 읽기를 시작할 인덱스 위치를 지정하며 기본값은 0입니다.

  • end - 끝 위치, 기본값은 버퍼 끝입니다.

반환값

버퍼 데이터를 디코딩하고 지정된 인코딩을 사용하여 문자열을 반환합니다.

Instance

buf = new Buffer(26);for (var i = 0 ; i < 26 ; i++) {
  buf[i] = i + 97;}
 console.log( buf.toString('ascii'));       
 // 输出: abcdefghijklmnopqrstuvwxyzconsole.log( buf.toString('ascii',0,5));   
 // 输出: abcdeconsole.log( buf.toString('utf8',0,5));    
 // 输出: abcdeconsole.log( buf.toString(undefined,0,5)); 
 // 使用 'utf8' 编码, 并输出: abcde

위 코드를 실행하면 출력 결과는 다음과 같습니다.

$ node main.js
abcdefghijklmnopqrstuvwxyz
abcde
abcde
abcde

Convert Buffer to JSON object

Syntax

Node Buffer를 JSON 객체로 변환하는 함수 구문 형식은 다음과 같습니다.

buf.toJSON()

Return

값은 JSON 개체를 반환합니다. instance

var buf = new Buffer('bianchengsanmei');
var json = buf.toJSON(buf);
 console.log(json);
execute 위의 코드, 출력 결과는 다음과 같습니다.

list - 병합에 사용되는 버퍼 개체의 배열 목록입니다.

totalLength - 병합된 버퍼 개체의 전체 길이를 지정합니다.

반환 값

여러 멤버를 결합하는 새로운 Buffer 개체를 반환합니다.

Instance

{ type: 'Buffer',
  data: [ 119, 119, 119, 46, 119, 51, 99, 115, 99, 104, 111, 111, 108, 46, 99, 110 ] }
위 코드를 실행하면 출력 결과는 다음과 같습니다.
    Buffer.concat(list[, totalLength])
  • Buffer 비교
  • Syntax

    Node Buffer 비교의 함수 구문은 다음과 같습니다. 이 방법은 Node.js v0에서 도입되었습니다. .12.2 버전:

    var buffer1 = new Buffer('编程三昧 ');
    var buffer2 = new Buffer('bi');
    var buffer2 = new Buffer('bianchengsanmei');
    var buffer3 = Buffer.concat([buffer1,buffer2]);
    console.log("buffer3 内容: " + buffer3.toString());

    parameters

    매개변수는 다음과 같이 설명됩니다.

    otherBuffer

    -

    buf

    개체와 비교되는 또 다른 Buffer 개체입니다.

    반환 값

    buf

    otherBuffer

    이전, 이후 또는 같음을 나타내는 숫자를 반환합니다.
    • Instance
      buffer3 内容: 编程三昧 bianchengsanmei
      위 코드를 실행하면 출력 결과는 다음과 같습니다.
    buf.compare(otherBuffer);
    Copy buffer

    Syntax

    노드 버퍼 복사 구문은 다음과 같습니다.

    var buffer1 = new Buffer('ABC');var buffer2 = new Buffer('ABCD');var result = buffer1.compare(buffer2);
     if(result < 0) {
       console.log(buffer1 + " 在 " + buffer2 + "之前");}else if(result == 0){
       console.log(buffer1 + " 与 " + buffer2 + "相同");}else {
       console.log(buffer1 + " 在 " + buffer2 + "之后");}
    Parameters

    매개변수가 설명되어 있습니다.

    targetBuffer - 복사할 Buffer 개체입니다.

    targetStart - 숫자, 선택, 기본값: 0

    sourceStart - 숫자, 선택, 기본값: 0sourceEnd - 숫자, 선택, 기본값: buffer.length

    반환 값

    반환 값 없음 .

      Instance
    ABC在ABCD之前
  • 위 코드를 실행하면 출력 결과는 다음과 같습니다.
  • buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])
  • Buffer Clipping
  • 노드 버퍼 클리핑 구문은 다음과 같습니다.
  • var buffer1 = new Buffer('ABC');
    // 拷贝一个缓冲区var buffer2 = new Buffer(3);
    buffer1.copy(buffer2);
    console.log("buffer2 content: " + buffer2.toString());

    Parameters

    매개 변수에 대한 설명은 다음과 같습니다.

    • start - 数字, 可选, 默认: 0
    • end - 数字, 可选, 默认: buffer.length

    返回值

    返回一个新的缓冲区,它和旧缓冲区指向同一块内存,但是从索引 start 到 end 的位置剪切。

    实例

    var buffer1 = new Buffer('youj');
    // 剪切缓冲区var buffer2 = buffer1.slice(0,2);
    console.log("buffer2 content: " + buffer2.toString());

    执行以上代码,输出结果为:

    buffer2 content: yo

    缓冲区长度

    语法 Node 缓冲区长度计算语法如下所示:

    buf.length;

    返回值

    返回 Buffer 对象所占据的内存长度。

    实例

    var buffer = new Buffer('bianchengsanmei');
    //  缓冲区长度console.log("buffer length: " + buffer.length);

    执行以上代码,输出结果为:

    buffer length: 15

    更多node相关知识,请访问:nodejs 教程!!

    위 내용은 Node.js 클래식 기술 버퍼(요약 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제