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

C# BitConverter.ToSingle() 메서드 – 바이트 배열을 float로 변환하기

C#의 BitConverter.ToSingle() 메서드는 바이트 배열 내 지정된 위치에서 4바이트를 읽어 이를 단정밀도 부동 소수점 숫자(float)로 변환해 반환합니다. 네트워크 통신, 파일 입출력, 이진 데이터 처리 등에서 바이트 데이터를 실수 값으로 해석해야 할 때 유용하게 활용됩니다.

구문

메서드의 기본 구문은 다음과 같습니다.

public static float ToSingle(byte[] value, int startIndex);

매개변수 설명

  • value: 변환 대상이 되는 바이트 배열입니다.
  • startIndex: 변환을 시작할 배열 내 위치(인덱스)입니다.

지정된 시작 인덱스부터 4바이트를 읽어 float 값으로 변환하며, 반환 형식은 float입니다.

예제 1

다음은 BitConverter.ToSingle() 메서드의 기본적인 사용 예제입니다.

using System;

public class Demo {
    public static void Main() {
        byte[] arr = {0, 1, 2, 3, 5, 7, 10};
        Console.WriteLine("Byte Array = {0} ",
            BitConverter.ToString(arr));

        for (int i = 0; i < arr.Length - 4; i = i + 4) {
            float res = BitConverter.ToSingle(arr, i);
            Console.WriteLine("\nValue = " + arr[i]);
            Console.WriteLine("Result = " + res);
        }
    }
}

실행 결과

Byte Array = 00-01-02-03-05-07-0A
Value = 0
Result = 3.820471E-37

위 예제에서는 인덱스 0부터 4바이트씩 건너뛰며 값을 변환합니다. 반복문의 조건이 i < arr.Length - 4로 설정된 이유는, 변환에 필요한 4바이트가 온전히 존재하는 범위까지만 반복하기 위해서입니다.

예제 2

이번에는 더 긴 바이트 배열을 사용한 예제를 살펴보겠습니다.

using System;

public class Demo {
    public static void Main() {
        byte[] arr = {0, 10, 2, 5, 32, 45, 0, 0, 9, 20, 30, 50, 76, 88};
        Console.WriteLine("Byte Array = {0} ", BitConverter.ToString(arr));

        for (int i = 0; i < arr.Length - 4; i = i + 4) {
            float res = BitConverter.ToSingle(arr, i);
            Console.WriteLine("\nValue = " + arr[i]);
            Console.WriteLine("Result = " + res);
        }
    }
}

실행 결과

Byte Array = 00-0A-02-05-20-2D-00-00-09-14-1E-32-4C-58
Value = 0
Result = 6.114407E-36
Value = 32
Result = 1.61878E-41
Value = 9
Result = 9.201366E-09

정리 및 주의 사항

BitConverter.ToSingle() 메서드는 바이트 배열에서 4바이트를 읽어 float 값으로 변환할 때 사용합니다. 사용 시 다음 사항에 유의해야 합니다.

  • startIndex부터 배열 끝까지 4바이트가 충분하지 않으면 ArgumentException 또는 ArgumentOutOfRangeException이 발생합니다.
  • 배열이 null이면 ArgumentNullException이 발생합니다.
  • 변환 결과는 실행 환경의 엔디안(little-endian / big-endian) 방식에 따라 달라질 수 있으므로, 서로 다른 시스템 간에 데이터를 주고받을 때는 엔디안 일치 여부를 확인해야 합니다.