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

C# BitConverter.ToDouble() 메서드 사용법과 예제 총정리

C#의 BitConverter.ToDouble() 메서드는 바이트 배열에서 지정된 위치부터 8바이트를 읽어 이를 배정밀도(double) 부동 소수점 숫자로 변환하여 반환하는 메서드입니다.

메서드 구문

기본 구문은 다음과 같습니다.

public static double ToDouble(byte[] val, int begnIndex);

여기서 각 매개변수의 의미는 다음과 같습니다.

  • val: 변환할 데이터가 담긴 바이트 배열
  • begnIndex: 변환을 시작할 배열 내 시작 위치(인덱스)

이 메서드는 시작 인덱스부터 정확히 8바이트를 읽어 double 값으로 변환하므로, 배열의 길이가 부족하면 ArgumentException 또는 ArgumentOutOfRangeException이 발생할 수 있습니다.

예제 1

첫 번째 예제를 살펴보겠습니다.

using System;
public class Demo {
    public static void Main(){
        byte[] arr = { 0, 2, 5, 10, 20, 26, 34, 42, 50, 58, 66, 74, 82, 89, 97, 107, 115};
        Console.WriteLine("Byte Array = {0} ", BitConverter.ToString(arr));
        for (int i = 1; i < arr.Length - 7; i = i + 8) {
            double values = BitConverter.ToDouble(arr, i);
            Console.WriteLine("\nValue = "+arr[i]);
            Console.WriteLine("Result = "+values);
        }
    }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Byte Array = 00-02-05-0A-14-1A-22-2A-32-3A-42-4A-52-59-61-6B-73
Value = 2
Result = 4.84667324189914E-67
Value = 58
Result = 9.57203245252997E+247

루프가 인덱스 1부터 시작해 8씩 증가하면서, 각 위치에서 8바이트를 읽어 double 값으로 변환한 것을 확인할 수 있습니다.

예제 2

이번에는 다른 예제를 살펴보겠습니다.

using System;
public class Demo {
    public static void Main(){
        byte[] arr = { 0, 3, 7, 10, 18, 20, 25, 26, 34};
        Console.WriteLine("Byte Array = {0} ",
        BitConverter.ToString(arr));
        for (int i = 1; i < arr.Length - 7; i = i + 8) {
            double values = BitConverter.ToDouble(arr, i);
            Console.WriteLine("\nValue = "+arr[i]);
            Console.WriteLine("Result = "+values);
        }
    }
}

출력 결과

위 코드의 실행 결과는 다음과 같습니다.

Byte Array = 00-03-07-0A-12-14-19-1A-22
Value = 3
Result = 2.09001158167895E-144

정리

BitConverter.ToDouble() 메서드는 네트워크 통신, 파일 입출력 등에서 바이트 스트림에 저장된 실수 데이터를 복원할 때 유용하게 사용됩니다. 사용 시에는 반드시 시작 인덱스부터 8바이트가 모두 존재하는지 확인해야 하며, 그렇지 않으면 예외가 발생한다는 점을 기억해 두는 것이 좋습니다.