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

C# Buffer.SetByte() 메서드 완벽 가이드 – 배열 바이트 값 설정 예제

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() 메서드를 활용하면 배열 내부의 개별 바이트를 세밀하게 제어할 수 있어, 저수준 메모리 작업이나 데이터 직렬화 등에 유용하게 사용됩니다.