Buffer란?

hyoni·2025년 2월 11일

용어

목록 보기
2/3
post-thumbnail

Buffer

어떤 장치에서 다른 장치로 데이터를 송신할 때 일어나는 시간의 차이나 데이터 흐름의 속도 차이를 조정하기 위해 일시적으로 데이터를 기억시키는 장치. 순화어는 `완충기'.

BufferNode.js에서 주로 사용되는 객체로, 바이너리 데이터를 처리하고 다루기 위해 사용됩니다. 일반적으로 텍스트, 이미지, 오디오 파일과 같은 이진 데이터를 처리할 때 유용합니다. JavaScript에서는 문자열을 처리할 때 유니코드를 기반으로 하지만, Buffer는 텍스트뿐만 아니라 바이너리 데이터를 직접 다룰 수 있도록 도와줍니다.

주요 특징

  • 이진 데이터 처리: Buffer는 0부터 255 사이의 정수 값을 가지는 바이트 배열로, 메모리에 바이너리 데이터를 저장합니다.
  • 동기식/비동기식 I/O: Buffer는 특히 파일 시스템이나 네트워크에서 데이터를 읽고 쓸 때 유용합니다. 예를 들어, 파일을 읽거나 네트워크 요청을 통해 이진 데이터를 주고받을 때 사용됩니다.
  • 메모리 효율성: Buffer는 메모리 공간을 고정된 크기로 할당하고, 데이터를 빠르게 처리할 수 있습니다.

사용 예시

  1. Buffer 생성
    Buffer는 여러 가지 방법으로 생성할 수 있습니다:

    • 배열로부터 생성:

      const buffer = Buffer.from([72, 101, 108, 108, 111]);
      console.log(buffer.toString()); // 출력: "Hello"
    • 문자열로부터 생성:

      const buffer = Buffer.from('Hello');
      console.log(buffer); // 출력: <Buffer 48 65 6c 6c 6f>
    • 지정된 크기의 버퍼 생성:

      const buffer = Buffer.alloc(10); // 크기 10의 버퍼 생성
      console.log(buffer); // 출력: <Buffer 00 00 00 00 00 00 00 00 00 00>
  2. 버퍼 조작
    Buffer는 데이터의 일부를 변경할 수 있습니다:

    • 데이터 변경:
      const buffer = Buffer.from('Hello');
      buffer[0] = 74; // 'H'에서 'J'로 변경
      console.log(buffer.toString()); // 출력: "Jello"
  3. 버퍼의 크기
    Buffer 객체는 length 속성을 사용하여 크기를 알 수 있습니다.

    const buffer = Buffer.from('Hello');
    console.log(buffer.length); // 출력: 5
  4. 버퍼의 부분 복사
    Buffer는 데이터를 복사할 수 있는 방법도 제공합니다:

    const buffer = Buffer.from('Hello World');
    const copy = buffer.slice(0, 5); // "Hello" 부분만 복사
    console.log(copy.toString()); // 출력: "Hello"

주요 메서드

  • Buffer.from(array): 배열을 기반으로 버퍼를 생성.
  • Buffer.from(string, encoding): 문자열을 기반으로 버퍼를 생성 (인코딩 옵션 제공).
  • Buffer.alloc(size): 지정된 크기의 버퍼를 생성하고, 기본적으로 0으로 채움.
  • Buffer.allocUnsafe(size): 지정된 크기의 버퍼를 생성하고, 초기화되지 않은 데이터를 포함.
  • buffer.toString([encoding], [start], [end]): 버퍼를 문자열로 변환.
  • buffer.slice([start], [end]): 버퍼의 일부를 잘라내어 새 버퍼를 반환.

사용 예시: 파일 읽기/쓰기

Buffer는 파일 시스템 작업과 관련이 많습니다. 예를 들어, Node.js에서 파일을 읽을 때는 이진 데이터로 읽고, 이를 Buffer 객체로 다룰 수 있습니다.

const fs = require('fs');

// 파일 읽기 (이진 데이터)
fs.readFile('image.png', (err, data) => {
    if (err) throw err;
    console.log(data); // <Buffer ...>
});

정리

  • Buffer는 이진 데이터를 메모리에서 효율적으로 처리하고 다룰 수 있도록 설계된 객체입니다.
  • 문자열, 파일, 네트워크 등의 데이터를 다룰 때 사용되며, JavaScript에서는 문자열과 다르게 바이트 단위로 데이터를 처리할 수 있게 해줍니다.
  • 이진 데이터를 다루는 작업에서 빠르고 효율적인 처리가 가능합니다.
profile
코딩공부 👩‍💻

0개의 댓글