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

C# Buffer.GetByte() 메서드로 배열의 개별 바이트 읽는 방법

C#에서 Buffer.GetByte() 메서드 사용하기

C#에서 Buffer.GetByte() 메서드를 사용하면 배열에 저장된 데이터를 바이트 단위로 하나씩 읽을 수 있습니다. 이 메서드는 지정한 인덱스 위치에 있는 단일 바이트 값을 반환하며, 정수형 배열처럼 각 요소가 여러 바이트로 구성된 경우에도 내부 바이트까지 세밀하게 확인할 수 있습니다.

배열 선언

먼저 예제에서 사용할 정수형 배열을 선언합니다.

int[] arr = { 3, 4, 12 };

이제 반복문과 함께 Buffer.ByteLength()Buffer.GetByte() 메서드를 활용해 배열 전체의 바이트를 순차적으로 출력해 보겠습니다.

for (int i = 0; i < Buffer.ByteLength(arr); i++) {
   Console.WriteLine(Buffer.GetByte(arr, i));
}

여기서 Buffer.ByteLength(arr)는 배열의 총 바이트 수를 반환합니다. int 타입은 32비트(4바이트)이므로, 3개의 요소를 가진 배열은 총 12바이트가 됩니다.

전체 코드

using System;
using System.Text;
public class Demo {
   public static void Main() {
      int[] arr = { 3, 4, 12 };
      // 바이트 배열을 순회하며 각 바이트 출력
      for (int i = 0; i < Buffer.ByteLength(arr); i++) {
         Console.WriteLine(Buffer.GetByte(arr, i));
      }
   }
}

실행 결과

3
0
0
0
4
0
0
0
12
0
0
0

결과 해석

출력 결과를 보면 각 정수 값(3, 4, 12) 뒤에 0이 세 번씩 출력되는 것을 확인할 수 있습니다. 이는 C#의 int 타입이 리틀 엔디안(little-endian) 방식으로 메모리에 저장되기 때문입니다. 즉, 하위 바이트부터 차례대로 저장되므로 값 자체는 첫 번째 바이트에 위치하고 나머지 3개의 상위 바이트는 0으로 채워집니다.

이처럼 Buffer.GetByte() 메서드는 배열의 내부 바이트 표현을 검사할 때 유용하게 활용할 수 있으며, 직렬화, 이진 데이터 처리, 디버깅 등 다양한 상황에서 활용도가 높습니다.