JavaScript에서 이진 데이터 이해하기 : ArrayBuffer, TypedArray, Blob, File
Intro
업무에서 이미지를 다루기 시작하면서 이진 데이터를 표현하고 처리하는 방법에 대해 알아보는 시간을 가졌습니다. 이진 데이터는 보통 파일을 생성, 업로드, 다운로드, 전송할 때 사용됩니다.
JavaScript에는 이런 데이터를 표현하고 다루기 위한 다양한 타입이 제공됩니다. File, Blob, ArrayBuffer, TypedArray와 같은 타입이 그 예로, 각각의 방식은 조금씩 다른 특성과 용도로 사용 되고 있습니다. 이 글에서는 각 타입이 어떤 상황에서 가장 잘 맞는지, 또 어떤 차이점이 있는지 알아보려고 합니다.
TL;DR
자바스크립트에서 다양한 이진 데이터 타입을 이해하면 효율적으로 데이터를 처리할 수 있습니다. 각 타입은 다음과 같은 특징과 용도를 갖고 있습니다:
-
ArrayBuffer: 고정된 크기의 메모리 공간을 참조하며 기본적인 이진 데이터 저장에 사용됩니다. 대용량 파일 데이터를 직접 조작해야 할 때, 필요한 부분만 메모리에 로드하여 효율적으로 관리할 수 있습니다. -
TypedArray:ArrayBuffer위에서 특정 바이트 단위로 데이터를 해석할 수 있는 view를 제공합니다. 예를 들어,Uint8Array,Int16Array등 다양한 정수와 실수 타입으로 해석할 수 있어 연산에 강점이 있습니다. 이미지 픽셀 데이터와 같이 숫자 값으로 저장된 데이터를 배열 형태로 처리할 때 유용합니다. -
DataView:ArrayBuffer데이터를 다양한 형식으로 유연하게 해석할 수 있도록 하는 view입니다. 여러 형식의 데이터가 혼합된 버퍼를 처리할 때 유리하며, 네트워크 패킷 데이터와 같이 혼합된 형식으로 저장된 데이터를 순서에 따라 해석하는 데 적합합니다. -
Blob: MIME 타입을 포함하여 이진 데이터를 관리하며, 파일 업로드와 다운로드 시 자주 사용됩니다. 서버에서 받은 Blob 데이터를 URL로 변환하여 사용자에게 표시하거나 다운로드할 수 있습니다. -
File:Blob객체에 파일 시스템 메타 데이터가 추가된 타입으로, 파일 선택 및 파일 읽기 작업을 위한<input>요소와 함께 주로 사용됩니다. 사용자가 로컬 파일을 업로드할 때File객체를 통해 서버로 전송하거나 파일 내용을 읽을 수 있습니다.
