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으로 남아 있음을 확인할 수 있습니다.