프로그래밍/NodeJS

[NodeJS] Buffer 함수 사용법

Beginner:) 2021. 1. 26.
320x100

2020/12/30 - [기타] - 아스키코드표 (ASCII)

 

아스키코드표 (ASCII)

아스키 코드표입니다. 통신용으로 보기 편하게 10진수, 16진수, 문자표 매칭입니다. 이외는 엑셀파일과 텍스트 파일 첨부하니 엑셀의 경우 열을 숨겨서 보시면 편합니다. (sheet 2개입니다.)

park-duck.tistory.com

 

Buffer사용에 필요한 16진수 코드표 보기

 

Buffer.alloc()

size <integer>

fill <string> | <Buffer> | <Uint8Array> | <integer> (Default: 0)

encoding <string>

 

예제)

Buffer.alloc(10);

 

Buffer.alloc(10,"A");

Buffer.alloc(10,"ABCD");

 

 

Buffer.from()

1.

arrayBuffer <ArrayBuffer> | <SharedArrayBuffer>
byteOffset <integer> 
length <integer> 

 

예제)

Buffer.from([0x41,0x42,0x43]);

 

Buffer.from("ABC DEF");

 

2.

string <string>
encoding <string> (Default: 'utf8')

 

예제)

Buffer.from("4142434445",'hex');

 

참고)

Buffer.from(Array.from({length:5},(v,i)=>i));

이런식으로 쓰면 Buffer가 0,1,2,3,4 로 쓰인다.

 

Buffer.includes()

예제)

let temp = Buffer.from("Hello World");
let test = temp.includes("Hello");

 

Buffer.readInt16BE()

외에 readBigInt64BE, readBigUInt64BE, readDoubleBE, readInt8, ReadUInt16BE 등이 있음.

BE = Big Endian

 

예제)

let temp = Buffer.from([0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x04]);
let test1 = temp.readInt16BE(0);
let test2 = temp.readInt16BE(2);
let test3 = temp.readInt16BE(4);
let test4 = temp.readInt16BE(6);

 

Buffer.readInt16LE()

외에 readBigInt64LE, readBigUInt64LE, readDoubleLE, readInt8, ReadUInt16LE 등이 있음.

LE = Little Endian

 

예제)

let temp = Buffer.from([0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x04]); 
let test1 = temp.readInt16LE(0); // 0x0100
let test2 = temp.readInt16LE(2); // 0x0200
let test3 = temp.readInt16LE(4); // 0x0300
let test4 = temp.readInt16LE(6); // 0x0400

 

let test = temp.readInt16LE(7); //error  BE도 offset 에러는 같음.

 

 

 

Buffer.writeInt16LE()

read와 마찬가지로 writeUint64LE 등이 있음.

LE = Little Endian

let test = Buffer.alloc(10,0);
test.writeInt16LE(0x0001,0);
test.writeInt16LE(0x0002,2);
test.writeInt16LE(0x0003,4);
test.writeInt16LE(0x0004,6);
test.writeInt16LE(0x0005,8);

Buffer.writeInt16BE()

let test = Buffer.alloc(10,0); 
test.writeInt16BE(0x0001,0); 
test.writeInt16BE(0x0002,2); 
test.writeInt16BE(0x0003,4); 
test.writeInt16BE(0x0004,6); 
test.writeInt16BE(0x0005,8);

 

 

Buffer.concat()

list <Buffer[]> | <Uint8Array[]>
totalLength <integer>

 

예제)

let temp1 = Buffer.from([0x01,0x02,0x03]);
let temp2 = Buffer.from([0x04,0x05,0x06]);
let temp3 = Buffer.from([0x07,0x08,0x09]);
let test = Buffer.concat([temp1,temp2,temp3]);

 

let temp1 = Buffer.from([0x01,0x02,0x03]); 
let temp2 = Buffer.from([0x04,0x05,0x06]); 
let temp3 = Buffer.from([0x07,0x08,0x09]); 
let test = Buffer.concat([temp1,temp2,temp3],5);

 

 

반응형

댓글