Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Buffer.BlockCopy를 사용해 한 배열에서 다른 배열로 바이트 범위 복사하기

C#에서 배열 간 바이트 범위 복사하기

C#에서는 Buffer.BlockCopy 메서드를 사용하여 한 배열에서 다른 배열로 지정된 범위의 바이트를 손쉽게 복사할 수 있습니다. 이 메서드는 기본 형식(primitive type)이 저장된 배열 사이에서 원시 데이터를 빠르게 복사할 때 특히 유용합니다.

바이트 배열 설정

먼저 복사할 원본 바이트 배열과 복사 대상이 될 바이트 배열을 선언합니다.

byte[] b1 = new byte[] {22, 49};
byte[] b2 = new byte[5];

배열 간 바이트 복사

Buffer.BlockCopy 메서드를 호출하여 b1 배열의 처음 2바이트를 b2 배열의 시작 위치로 복사합니다.

Buffer.BlockCopy(b1, 0, b2, 0, 2);

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

  • src: 복사할 데이터가 있는 원본 배열
  • srcOffset: 원본 배열에서 복사를 시작할 바이트 오프셋(0부터 시작)
  • dst: 복사된 데이터가 저장될 대상 배열
  • dstOffset: 대상 배열에 데이터를 쓰기 시작할 바이트 오프셋
  • count: 복사할 바이트 수

전체 예제 코드

using System;
class Demo {
   static void Main(){
      // 바이트 배열 선언
      byte[] b1 = new byte[] {22, 49};
      byte[] b2 = new byte[5];
      // 한 배열에서 다른 배열로 바이트 복사
      Buffer.BlockCopy(b1, 0, b2, 0, 2);
      /* 복사된 요소가 담긴 바이트 배열 b2를 인자로 전달하여 메서드 호출 */
      bufferFunc(b2);
   }
   static void bufferFunc(byte[] a) {
      for (int j = 0; j < a.Length; j++) {
         Console.Write(a[j]);
      }
      Console.WriteLine();
   }
}

실행 결과

2249000

출력 결과를 보면 b2 배열의 앞 두 요소에 원본 배열의 값인 22와 49가 복사되었고, 나머지 세 요소는 초기화되지 않아 기본값인 0으로 남아 있음을 확인할 수 있습니다.