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

C# Buffer.BlockCopy로 버퍼 블록 복사하기

C#에서 Buffer.BlockCopy 메서드는 한 바이트 배열(byte array)에서 다른 바이트 배열로 지정된 바이트 수만큼 데이터를 빠르게 복사하는 데 사용됩니다. 이 메서드는 배열 요소를 하나씩 순회하는 방식보다 성능이 뛰어나기 때문에 대용량 데이터 처리에 유용합니다.

Buffer.BlockCopy 메서드의 매개변수

  • src – 복사할 데이터가 있는 원본 배열
  • srcOffset – 원본 배열에서 복사를 시작할 위치(바이트 단위)
  • dst – 데이터를 복사받을 대상 배열
  • dstOffset – 대상 배열에 저장을 시작할 위치(바이트 단위)
  • count – 복사할 바이트 수

예제 코드

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

실행 결과

5566778899000

코드 설명

위 예제에서는 5개의 요소({55, 66, 77, 88, 99})를 가진 바이트 배열 b1과 크기가 8인 b2 배열을 선언했습니다. Buffer.BlockCopy(b1, 0, b2, 0, 5) 호출을 통해 b1의 처음부터 5바이트가 b2의 처음부터 차례대로 복사됩니다.

복사 후 b2에는 복사된 값 5개와 함께 나머지 3개의 요소가 기본값인 0으로 채워져 있으므로, 출력 결과는 5566778899000이 됩니다. 이처럼 Buffer.BlockCopy는 원본 배열보다 큰 대상 배열에 부분적으로 데이터를 복사할 때도 손쉽게 사용할 수 있습니다.