목차
Buffer 클래스 만들기
Write buffer
버퍼에서 데이터 읽기
Convert Buffer to JSON object
totalLength - 병합된 버퍼 개체의 전체 길이를 지정합니다.
-
targetStart - 숫자, 선택, 기본값: 0
缓冲区裁剪
缓冲区长度
웹 프론트엔드 JS 튜토리얼 Node.js의 버퍼 자세히 살펴보기

Node.js의 버퍼 자세히 살펴보기

Jan 27, 2022 pm 06:27 PM
buffer node.js 완충기

이 글에서는 Node.js의 Buffer에 대한 심층적인 이해를 돕기 위해 Buffer 클래스를 생성하는 다양한 방법과 버퍼에 쓰는 방법 등을 소개하겠습니다. 도움이 되셨으면 좋겠습니다!

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(&#39;ascii&#39;));       // 输出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString(&#39;ascii&#39;,0,5));   // 输出: abcde
console.log( buf.toString(&#39;utf8&#39;,0,5));    // 输出: abcde
console.log( buf.toString(undefined,0,5)); // 使用 &#39;utf8&#39; 编码, 并输出: 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(&#39;bianchengsanmei&#39;);
var json = buf.toJSON(buf);
 
console.log(json);
로그인 후 복사
execute 위의 코드, 출력 결과는 다음과 같습니다.

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

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

반환 값

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

Instance

{
  type: &#39;Buffer&#39;,
  data: [
     98, 105, 97, 110, 99, 104, 101, 110, 103, 115, 97, 110, 109, 101, 105
  ]
}
로그인 후 복사

위 코드를 실행하면 출력 결과는 다음과 같습니다.
    Buffer.concat(list[, totalLength])
    로그인 후 복사
  • Buffer 비교
  • Syntax

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

var buffer1 = new Buffer(&#39;编程三昧 &#39;);
var buffer2 = new Buffer(&#39;bi&#39;);
var buffer2 = new Buffer(&#39;bianchengsanmei&#39;);
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(&#39;ABC&#39;);
var buffer2 = new Buffer(&#39;ABCD&#39;);
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之前
    로그인 후 복사
  • 위 코드를 실행하면 출력 결과는 다음과 같습니다.
  • buffer2 content: ABC
    로그인 후 복사

    缓冲区裁剪

    Node 缓冲区裁剪语法如下所示:

    buf.slice([start[, end]])
    로그인 후 복사

    参数

    参数描述如下:

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

    返回值

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

    实例

    var buffer1 = new Buffer(&#39;youj&#39;);
    // 剪切缓冲区
    var buffer2 = buffer1.slice(0,2);
    console.log("buffer2 content: " + buffer2.toString());
    로그인 후 복사

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

    buffer2 content: yo
    로그인 후 복사

    缓冲区长度

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

    buf.length;
    로그인 후 복사

    返回值

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

    实例

    var buffer = new Buffer(&#39;bianchengsanmei&#39;);
    //  缓冲区长度
    console.log("buffer length: " + buffer.length);
    로그인 후 복사

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

    buffer length: 15
    로그인 후 복사

    ~

    ~本文完,感谢阅读!

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

    위 내용은 Node.js의 버퍼 자세히 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

로그가 사용되는 로거 버퍼 크기 로그가 사용되는 로거 버퍼 크기 Mar 13, 2023 pm 04:27 PM

문제 분석을 용이하게 하기 위해 엔지니어에게 피드백 사용 정보 및 기록을 제공하는 기능입니다(개발 중에 사용). 사용자 자신은 업로드 로그를 자주 생성하지 않으므로 사용자에게는 쓸모가 없습니다. 로깅 버퍼는 디스크에 기록될 리두 로그에 대한 변경 벡터의 단기 저장에 사용되는 작은 임시 영역입니다. 디스크에 대한 로그 버퍼 쓰기는 여러 트랜잭션의 변경 벡터 배치입니다. 그럼에도 불구하고 로그 버퍼의 변경 벡터는 거의 실시간으로 디스크에 기록되며, 세션에서 COMMIT 문을 발행하면 로그 버퍼 쓰기 작업이 실시간으로 수행됩니다.

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Mar 29, 2023 pm 06:02 PM

이 기사는 NodeJS V8 엔진의 메모리 및 가비지 수집기(GC)에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다.

최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? 최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? Dec 13, 2022 pm 08:00 PM

Node용 Docker 이미지를 선택하는 것은 사소한 문제처럼 보일 수 있지만 이미지의 크기와 잠재적인 취약점은 CI/CD 프로세스와 보안에 상당한 영향을 미칠 수 있습니다. 그렇다면 최고의 Node.js Docker 이미지를 어떻게 선택합니까?

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Nov 16, 2022 pm 08:34 PM

Node 19가 정식 출시되었습니다. 이 글에서는 Node.js 19의 6가지 주요 기능에 대해 자세히 설명하겠습니다. 도움이 되셨으면 좋겠습니다!

Node.js의 GC(가비지 수집) 메커니즘에 대해 이야기해 보겠습니다. Node.js의 GC(가비지 수집) 메커니즘에 대해 이야기해 보겠습니다. Nov 29, 2022 pm 08:44 PM

Node.js는 GC(가비지 수집)를 어떻게 수행하나요? 다음 기사에서는 이에 대해 설명합니다.

Node의 이벤트 루프에 대해 이야기해 봅시다. Node의 이벤트 루프에 대해 이야기해 봅시다. Apr 11, 2023 pm 07:08 PM

이벤트 루프는 Node.js의 기본 부분이며 메인 스레드가 차단되지 않도록 하여 비동기 프로그래밍을 가능하게 합니다. 이벤트 루프를 이해하는 것은 효율적인 애플리케이션을 구축하는 데 중요합니다. 다음 기사는 Node.js의 이벤트 루프에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다!

See all articles