일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 맨해튼거리예제
- 프로그래머스 신규아이디추천
- js 알고리즘
- 좌표거리구하기
- 정렬 알고리즘
- binary search
- 타입스크립트
- 프로그래머스
- JavaScript
- 프로그래머스 자바스크립트
- 알고리즘
- next.js
- 맨해튼거리
- 자바스크립트 알고리즘
- 자료구조
- Javascript sort
- 키패드누르기풀이
- mysql스키마
- 프로그래머스 자바스크립트 풀이
- TypeScript
- TS
- 티스토리챌린지
- 자바스크립트 배열
- 자바스크립트 정렬
- Javascript 정렬
- 깃허브
- MySQL
- node.js
- 정규표현식문제
- 오블완
- Today
- Total
FE PARADISE
[Node.js] Buffer란? / Buffer.alloc, Buffer.allocUnsafe, Buffer.from 본문
[Node.js] Buffer란? / Buffer.alloc, Buffer.allocUnsafe, Buffer.from
PARADISE247 2023. 3. 13. 01:12Buffer
Buffer는 고정된 길이의 바이트 저장단위이다. 전역 스코프로 import하거나 require할 필요가 없다. (하지만, node.js 공식 문서에서는 명시적으로 import, require하는 것을 추천한다.)
Node.js에서 Buffer는 원시 이진 데이터를 처리하기 위해 사용되어진다. 한 buffer의 각 값은 바이트를 나타낸다.
Buffer는 array와 유사하지만 차이점이 존재한다. array는 사이즈 변환이 가능하고 어떤 타입이든 처리할 수 있지만 Buffer는 사이즈 변환이 불가하고 오직 이진값만 처리한다.
Buffer.alloc(size, fill, encoding)
size: 생성할 Buffer의 길이
fill: 생성할 Buffer에 채워넣을 값
encoding: Buffer의 인코딩 방식 ( ex: utf-8, utf8, base64 )
const buf1 = Buffer.alloc(10);
console.log(buf1);
// 결과: <Buffer 00 00 00 00 00 00 00 00 00 00>
0으로 채워진 길이 10인 Buffer를 출력하는 예제이다. 그 결과 0으로 채워진 길이 10인 Buffer가 <Buffer 00 00 00 00 00 00 00 00 00 00> 이렇게 출력된다.
const buf = Buffer.alloc(5, "a");
console.log(buf);
// 결과: <Buffer 61 61 61 61 61>
위는 길이 5인 a로 채워진 Buffer를 출력하는 예제이다. 그 결과 <Buffer 61 61 61 61 61>이 출력된다.
const bufE = Buffer.alloc(5, "Hi", "utf8");
console.log(bufE.toString());
// 결과: HiHiH
위는 길이 5인 Hi로 채워진 'utf8' 인코딩 방식의 Buffer를 출력한다. 콘솔 출력 시 toString으로 문자형식으로 바꿔 출력되도록 하였다. 그리하여 HiHiH가 출력된다.
Buffer.allocUnsafe(size)
size: 생성할 Buffer의 길이
alloc 처럼 주어진 size인자에 따라 특정 길이의 Buffer를 생성한다. 이때 allocUnsafe는 데이터를 0으로 Buffer를 초기화 하지 않고 생성한다. alloc보다 빠르다.
const buf1 = Buffer.alloc(5, "Hello");
const buf2 = Buffer.allocUnsafe(5);
buf1.copy(buf2);
console.log(buf2.toString());
// 결과: Hello
예제에서 buf1은 길이 5인 Hello를 내용으로 한 Buffer이고 buf2는 allocUnsafe로 길이 5인 Buffer를 생성해 할당한 변수이다. buf1.copy(buf2)를 통해 buf2에 buf1의 내용을 복사한 후 출력해보면 buf1의 내용인 Hello가 출력됨을 볼 수 있다.
Buffer.from()
const buf = Buffer.from("Hello");
console.log(buf);
// 결과: <Buffer 48 65 6c 6c 6f>
console.log(buf.length);
// 결과: 5
console.log(buf[3]);
// 결과: 108
Hello라는 문자를 from의 인자로 할당한 Buffer이다. 콘솔 출력 결과는 <Buffer 48 65 6c 6c 6f>이다. Hello가 유니코드 형태로 출력되었다.
buf.length를 출력하면 Buffer의 길이인 5가 출력되고 buf[3]를 출력하면 'l'의 유니코드 즉, 108이 출력된다.
'백엔드 > Node.js' 카테고리의 다른 글
zsh: command not found: nodemon 해결하기 (0) | 2024.03.17 |
---|---|
[Node.js] Node.js에서 파일명 변경하기 / fs.rename / fsPromises.rename / fs.renameSync (0) | 2023.03.07 |
[Node.js / Javascript] console에 대하여 - console 종류 (0) | 2023.02.21 |
[Node.js] Global object - __dirname, __filename, exports, module, require (0) | 2022.08.22 |