Buffer.SetByte() 메서드는 지정된 배열의 특정 바이트 위치에 원하는 값을 할당하는 데 사용됩니다. 이 메서드는 System 네임스페이스의 Buffer 클래스에 속해 있으며, 배열을 바이트 수준에서 직접 조작할 수 있도록 해줍니다.
SetByte() 메서드 기본 구문
Buffer.SetByte(array, index, value);
- array: 값을 설정할 대상 배열
- index: 값을 할당할 바이트 위치 (0부터 시작)
- value: 해당 위치에 저장할 바이트 값 (0~255)
예제 살펴보기
먼저 정수형 배열을 하나 선언합니다.
int[] arr = { 3, 4, 12 };
C#에서 int는 4바이트이므로, 위 배열은 총 12바이트(4 × 3)의 메모리를 차지합니다. 각 정수 값은 리틀 엔디안 방식으로 저장되기 때문에 하위 바이트가 먼저 배치됩니다.
이제 SetByte()를 사용하여 인덱스 3번 위치의 바이트 값을 20으로 변경합니다.
Buffer.SetByte(arr, 3, 20);
인덱스 3은 첫 번째 요소인 3의 상위 바이트에 해당하므로, 실행 후 첫 번째 요소의 바이트 구성이 [3, 0, 0, 20]으로 바뀌게 됩니다.
전체 코드
using System;
using System.Text;
public class Demo {
public static void Main() {
int[] arr = { 3, 4, 12 };
Console.WriteLine("Initial Array...");
// 배열을 바이트 단위로 순회
for (int i = 0; i < Buffer.ByteLength(arr); i++) {
Console.WriteLine(Buffer.GetByte(arr, i));
}
Buffer.SetByte(arr, 3, 20);
Console.WriteLine("New Array...");
// 변경된 배열을 바이트 단위로 순회
for (int i = 0; i < Buffer.ByteLength(arr); i++) {
Console.WriteLine(Buffer.GetByte(arr, i));
}
}
}
실행 결과
Initial Array... 3 0 0 0 4 0 0 0 12 0 0 0 New Array... 3 0 0 20 4 0 0 0 12 0 0 0
코드 설명
Buffer.ByteLength(arr)는 배열의 전체 바이트 길이를 반환하고, Buffer.GetByte(arr, i)는 지정한 인덱스의 바이트 값을 읽어옵니다. 출력 결과를 보면 초기 배열에서 첫 번째 정수 3은 [3, 0, 0, 0]의 바이트 시퀀스로 표현되지만, SetByte()로 인덱스 3에 20을 할당한 후에는 [3, 0, 0, 20]으로 변경된 것을 확인할 수 있습니다.
이처럼 Buffer 클래스의 SetByte()와 GetByte() 메서드를 활용하면 배열 내부의 개별 바이트를 세밀하게 제어할 수 있어, 저수준 메모리 작업이나 데이터 직렬화 등에 유용하게 사용됩니다.