프로그래밍

[nodejs] Buffer.toString()에서 지원하는 인코딩

채윤아빠 2020. 8. 4. 15:18
728x90
반응형

Buffer 클래스의 toString() 함수의 원형은 다음과 같습니다.

Buffer.toString([encoding], [start], [end])

각 매개변수는 다음과 같습니다.

매개변수 데이터형 설명 필수여부
encoding string Encoding to use. 'utf8' is the default encoding. See the encoding list. Optional
start number Beginning at the start, defaults to 0. Optional
end number Ending at the end. Defaults to buffer.length. Optional

toString() 함수에서 지원하는 인코딩 (encoding) 형식은 다음과 같습니다.

Encoding Description
'ascii' for 7 bit ASCII data only. This encoding method is way fast, but is limited to the ascii character set. To convert a null character into 0x00, you should use 'utf8'.
'utf8' Multibyte encoded Unicode characters. It has become the dominant character encoding for the world wide web.
'utf16le' 2 or 4 bytes, little-endian encoded Unicode characters, surrogate pairs (U+10000 to U+10FFFF) are supported.
'ucs2' Alias of 'utf16le'.
'base64' Base64 string encoding.
'binary' Method of encoding raw binary data into strings by using only the first 8 bits of each character. This encoding method is deprecated.
'hex' This method is used to encode each byte as two hexadecimal characters.

다음은 Buffer 내의 데이터를 헥사 문자열로 변환하여 출력하는 예제입니다.

data = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);

console.log(data);

console.log("hexa [1] = " + data.toString('hex'));
console.log("hexa [1.5] = " + data.toString('hex', 1, 18));
console.log("hexa [1.9] = " + data.toString('hex', 10, 18));

console.log("hexa [2] = " + Array.prototype.map.call(new Uint8Array(data),
               x => ('00' + x.toString(16)).slice(-2))
    .join('').match(/[a-fA-F0-9]{2}/g).join(' ').toString());

실행 결과는 다음과 같습니다.

Buffer(6) [98, 117, 102, 102, 101, 114]
hexa [1] = 627566666572
hexa [1.5] = 7566666572
hexa [1.9] = 
hexa [2] = 62 75 66 66 65 72

참고자료