Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript ArrayBuffer.slice() 메서드 완벽 정리 – 이진 데이터 버퍼 자르기

JavaScript의 ArrayBuffer 객체는 길이가 고정된 바이너리(이진) 데이터 버퍼를 나타냅니다. 이 객체가 제공하는 slice() 메서드는 기존 배열 버퍼의 일부를 잘라내어 새로운 ArrayBuffer 객체로 반환합니다. 중요한 점은 원본 버퍼는 그대로 유지되고, 지정한 범위의 데이터만 새 객체에 복사된다는 것입니다.

slice() 메서드는 두 개의 정수 인자를 받습니다. 첫 번째 인자는 반환할 구간의 시작 위치(포함), 두 번째 인자는 끝 위치(미포함)를 의미합니다.

문법

arrayBuffer.slice(start, end);

매개변수 설명

  • start – 잘라낼 구간의 시작 인덱스입니다. 이 인덱스는 결과에 포함됩니다.
  • end – 잘라낼 구간의 끝 인덱스입니다. 이 인덱스는 결과에서 제외됩니다.

인자를 생략하면 start는 기본값 0, end는 버퍼의 전체 길이로 처리되어 버퍼 전체가 복사됩니다. 또한 음수 값을 사용하면 버퍼의 끝을 기준으로 위치가 계산됩니다.

예제 코드

다음 예제를 직접 실행해 보세요.

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var arrayBuffer = new ArrayBuffer(16);
      var int32View = new Int32Array(arrayBuffer);
      int32View[1] = 102;
      var sliced = new Int32Array(arrayBuffer.slice(4,12));
      document.write(" "+sliced);
   </script>
</body>
</html>

코드 동작 방식

  1. 16바이트 크기의 ArrayBuffer를 생성합니다.
  2. Int32Array 뷰를 사용해 버퍼를 4개의 32비트 정수 요소로 다룹니다.
  3. 두 번째 요소(int32View[1])에 값 102를 저장합니다.
  4. slice(4, 12)는 버퍼의 4번째 바이트부터 11번째 바이트까지, 즉 두 번째와 세 번째 정수 요소에 해당하는 8바이트를 잘라내어 새로운 버퍼를 만듭니다.

실행 결과

102,0

출력 결과에서 알 수 있듯이, 잘라낸 구간에는 저장한 값 102와 아직 값을 할당하지 않아 기본값인 0이 함께 포함됩니다. 이처럼 slice() 메서드를 활용하면 대용량 이진 데이터에서 필요한 부분만 효율적으로 추출할 수 있습니다.