[JavaScript] DataView

Narcoker·2023년 6월 17일
0

JavaScript

목록 보기
46/55
post-custom-banner

DataView

ArrayBuffer를 볼 수 있는 뷰로, 버퍼의 이진 데이터를 읽거나 쓸 수 있게 한다.
ArrayBuffer는 단순히 메모리 블록을 나타내지만,
DataView는 이를 다루기 위한 API를 제공

little-endian과 bigendian 바이트 순서를 지원한다.
다양한 플랫폼에서 작동하는 이진 데이터를 해적하고 조작하는데 유용하다.

파라미터 : ArrayBuffer 인스턴스, offset 바이트(선택), view 하려는 Bytelength(선택)

const buffer = new ArrayBuffer(4);
const obj = new Int8Array(buffer);
obj.set([10,20,30,40]);

const view = new DataView(buffer, 1, 2); // [20, 30]
console.log(view.getInt8(0)); // 20

method

getInt8, getUint8, getInt16, getUint16, getInt32, getUint32, getFloat32, getFloat64

이 메소드들은 각각 8, 16, 32비트 정수와 32, 64비트 부동 소수점 숫자를 읽는데 사용됩니다.

파라미터 : byteOffset,

const buffer = new ArrayBuffer(4);
const obj = new Int8Array(buffer);
obj.set([10,20,30,40]);

const view = new DataView(buffer, 1, 2);

console.log(view,getInt8(0)); // 20

view.setInt8(1,70); // 원본 값 obj 도 바뀐다.
console.log(view.getInt8(1)); // 70

console.log(obj); // {0: 10, 1: 20, 2: 70, 3: 40}

setInt8, setUint8, setInt16, setUint16, setInt32, setUint32, setFloat32, setFloat64

이 메소드들은 각각 8, 16, 32비트 정수와 32, 64비트 부동 소수점 숫자를 쓰는데 사용됩니다.

16 이상 부터 엔디언 타입을 제어할 수 있다.

파라미터 : byteOffset, 설정할 값, 엔디언 타입(True|False, true면 리틀, false면 빅, 기본값 false)

const buffer = new ArrayBuffer(4);
const view = new DataView(buffer, 1, 2);
view.setInt(0,20);
console.log(view.getInt8(0)); // 20

propery

DataView.buffer

DataView 인스턴스와 연결된 ArrayBuffer

DataView.byteOffset

오프센 바이트 값
new DataView(buffer, 1) 에서 두번째 파라미터에 작성한 값

DataView.byteLength

view 바이트 수
new DataView(buffer, 1, 2)의 세번째 파라미터에 작성한 값

Endian

16진수 4바이트로 구성된 0x12 0x34 0x56 0x78 을
엔디언 구분에 따라 배치해보자

Big-Endian

0x12 0x34 0x56 0x78

앞에서 부터 배치
TCP/IP 전송, Intel CPU 에서 사용

Litter-endian

0x78 0x56 0x34 0x12

뒤에서 부터 배치
IBM CPU 에서 사용

Mixed-endian

0x34 0x12 0x78 0x56

앞뒤를 섞어서 배치

profile
열정, 끈기, 집념의 Frontend Developer
post-custom-banner

0개의 댓글