그냥 블로그

[JavaScript] ArrayBuffer 본문

Front-End/JavaScript

[JavaScript] ArrayBuffer

코딩하는 공대생 2024. 7. 18. 14:21
반응형

+ More (주말)

  • 프로세스 메모리 구조 정리하기 
  • call Stack 찾아보기 
  • v8엔진에서 프로세스 동작 정리하기 
  • 브라우저 / v8 엔진에서 프로세스 동작 차이까지 알아보기
  • UML - 클래스 다이어그램 정리해보기 

 

ArrayBuffer

 

레퍼런스 타입으로 되어있고, 고정된 길이의 연속된 메모리 공간을 할당해 사용하겠다고 알려주는 역할을한다.

오디오나 미디어 전용인 버퍼도 있다 :)
js에서 바이너리 데이터 (ex) 이미지 처리) 등에 사용된다. 

 

let arrBuffer = new ArrayBuffr(16);

 

ArrayBuffer은 길이가 고정되어 있다. 정확하게 메모리 어느 바이트만큼 명시하는 역할을 하고 있기에 배열처럼 arry[0] 같은 get은 불가능 하다. 

=> ArrayBuffer는 Array가 아니다!!

 

개별 바이트에 엑세스하려면 "뷰" 개체가 필요하다..! buffer[index]

뷰(TypedArray) : Unit8Array, Unit16Array.... 등등...

뷰 객체는 그 자체로는 아무것도 저장하지 않는다. 그저, 저장된 바이트에 대한 해석을 제공하는 것.

let buffer = new ArrayBuffer(16); // create a buffer of length 16

let view = new Uint32Array(buffer); // treat buffer as a sequence of 32-bit integers

alert(Uint32Array.BYTES_PER_ELEMENT); // 4 bytes per integer

alert(view.length); // 4, it stores that many integers
alert(view.byteLength); // 16, the size in bytes

// let's write a value
view[0] = 123456;

// iterate over values
for(let num of view) {
  alert(num); // 123456, then 0, 0, 0 (4 values total)
}

 

=> ArrayBuffer로 특정 길이 메모리를 할당할 수 있고 Unit32Array 같은 TypedArray/ 뷰로 접근할 수 있다! 

 

 

 

 

https://ko.javascript.info/arraybuffer-binary-arrays

 

ArrayBuffer, binary arrays

 

ko.javascript.info

https://velog.io/@chltjdrhd777/ArrayBuffer-%EC%99%80-Blob

 

ArrayBuffer 와 Blob

웹개발을 하다보면 네트워크를 통해 파일을 받게 되는데, 이때 파일은 주로 2진 데이터로 이루어진 것이 일반적이다. (0과 1로 이루어진 세계) 다만, 가끔 보면 이 2진데이터에 대해서 상당히, 혼

velog.io