라벨이 16진법인 게시물 표시

[Node.js] Buffer 란?

Buffer 란? 바이너리 데이터들의 스트림을 읽거나, 조작하는 매커니즘. 간단히 말해 버퍼는 0, 1로 이루어진 컴퓨터 친화적인 데이터이다. Nodejs 공식문서에 아래와 같이 나와있다. The Buffer class was introduced as part of the Node.js API to enable interaction with octet streams in TCP streams, file system operations, and other contexts. 버퍼 클래스는 TCP 스트림, 파일 시스템 작업 및 기타 컨텍스트에서 옥텟 스트림과의 상호작용이 가능하도록 Node.js API의 일부로 도입되었다. Buffer란 Node.js 에서 제공하는 Binary 의 데이터를 담을 수 있는 객체이다. 바이너리 데이터라는 말그대로 1010011010 과 같은 데이터가 Buffer 객체에 담긴다. 여기서 바이너리 데이터(binary data)란  컴퓨터는 이진수로 데이터를 저장하고 표현한다. 이진수는 0과 1의 집합이다. 각 이진수에서 0 또는 1로 되어있는 자리를 비트(bit)라고 한다.  const buff = Buffer . from ( 'hello' , 'utf-8' ); // utf-8 인코딩 생략가능 console . log ( buff ); //<Buffer 68 65 6c 6c 6f> 여기서 이진법이라면 1001101010 이런식으로 되어있어야 하는거 아닌가라는 의문을 가질 수 있다. 하지만 실제로 버퍼가 메모리에 담고있는 값은 이진수 이지만 콘솔에는 16진수로 표시된다. utf-8은 생략가능하지만 작성하지 않을경우 글자가 깨질 수 있다. console . log ( buff . toString ()); //hello buffur를 사람이 읽기 쉬운 문자열로 변환하기 위해서는 toString()메서드를 사용한다. toString() 메서드의 경우 default로 utf-8이 설정되어있어서 깨지지않고