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) 방식에 따라 달라질 수 있으므로, 서로 다른 시스템 간에 데이터를 주고받을 때는 엔디안 일치 여부를 확인해야 합니다.