Open In App

C# | BitConverter.ToDouble() Method

Last Updated : 01 Feb, 2019
Improve
Improve
Like Article
Like
Save
Share
Report

BitConverter.ToDouble() Method is used to return a double-precision floating point number converted from eight bytes at a specified position in a byte array.

Syntax:

public static double ToDouble (byte[] value, int startIndex);

Parameters:

value: It is an array of bytes.
startIndex: It is the starting position within the value.

Return Value: This method returns a double precision floating point number formed by eight bytes beginning at startIndex.

Exceptions:

  • ArgumentException: If the startIndex is greater than or equal to the length of value minus 7, and is less than or equal to the length of value minus 1.
  • ArgumentNullException: If the value is null.
  • ArgumentOutOfRangeException: If the startIndex is less than zero or greater than the length of value minus 1.

Below programs illustrate the use of BitConverter.ToDouble(Byte[], Int32) Method:

Example 1:




// C# program to demonstrate
// BitConverter.ToDouble(Byte[], Int32)
// Method
using System;
  
class GFG {
  
// Main Method
public static void Main()
{
  
    try {
  
        // Define an array of byte values.
        byte[] bytes = {0,0,1,2,7,126,78,55,
                        255,78,45,198,200,1,
                        1,1,1,255,255,2,4,4,
                        77,77,77,77,77,0,1};
  
        // Display the values of the myArr.
        Console.WriteLine("Initial Array: ");
  
        // calling the PrintIndexAndValues()
        // method to print
        PrintIndexAndValues(bytes);
  
        // print char value
        Console.WriteLine("index     Array elements    "+         
                          "              double values");
        Console.WriteLine();
  
        // getting double value and Display it
        for (int index = 0; index < bytes.Length - 7;
                                index = index + 8) {
            double values = BitConverter.ToDouble(bytes, index);
            Console.WriteLine(" {0}     {1}    {2}"
                  index, BitConverter.ToString(bytes, 
                                  index, 8), values);
        }
    }
    catch (ArgumentNullException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
    catch (ArgumentOutOfRangeException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
    catch (ArgumentException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
}
  
// Defining the method
// PrintIndexAndValues
public static void PrintIndexAndValues(byte[] myArr)
{
    int count = 0;
    for (int i = 0; i < myArr.Length; i++) {
  
        if (count == 18) {
            Console.WriteLine();
            Console.Write("{0} ", myArr[i]);
            count = 0;
        }
        else {
            Console.Write("{0} ", myArr[i]);
            count++;
        }
    }
  
    Console.WriteLine();
    Console.WriteLine();
}
}


Output:

Initial Array: 
0 0 1 2 7 126 78 55 255 78 45 198 200 1 1 1 1 255 
255 2 4 4 77 77 77 77 77 0 1 

index     Array elements                  double values

 0     00-00-01-02-07-7E-4E-37    2.73464354303054E-42
 8     FF-4E-2D-C6-C8-01-01-01    7.74999325882041E-304
 16     01-FF-FF-02-04-04-4D-4D    2.38727219494443E+64

Example 2: For ArgumentException




// C# program to demonstrate
// BitConverter.ToDouble(Byte[], Int32)
// Method
using System;
  
class GFG {
  
// Main Method
public static void Main()
{
  
    try {
  
        // Define an array of byte values.
        byte[] bytes = {0,0,1,2,7,126,78,55,
                        255,78,45,198,200,1,
                        1,1,1,255,255,2,4,4,
                        77,77,77,77,77,0,1,
                        0,0,1,2,7,126,78,55,
                        255,78,45,198,200,1,
                        1,1,1,255,255,2,4,4,
                        255,255,255,255,245,
                        245,245,245,245,245,
                        245,245,245,245,0,0,
                        0,0,0,0,0,0,6,5,6,56,
                        31,31,31,54,23,253,};
  
        // Display the values of the myArr.
        Console.WriteLine("Initial Array: ");
  
        // calling the PrintIndexAndValues()
        // method to print
        PrintIndexAndValues(bytes);
  
        // print char value
        Console.WriteLine("index     Array elements"+
                             "       double values");
        Console.WriteLine();
  
        // getting double value and Display it
        for (int index = 4; index < bytes.Length - 6; 
                            index = index + 8) {
  
            if (index == bytes.Length - 7) {
                Console.WriteLine();
                Console.WriteLine("startIndex is equal to"+
                            " the length of bytes minus 7");
                              
                double values = BitConverter.ToDouble(bytes, index);
                Console.WriteLine("  {0}        {1}         {2}"
                              index, BitConverter.ToString(bytes,
                                              index, 4), values);
            }
            else {
                double values = BitConverter.ToDouble(bytes, index);
                Console.WriteLine("  {0}        {1}         {2}",
                       index, BitConverter.ToString(bytes, index,
                                                     8), values);
            }
        }
    }
    catch (ArgumentNullException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
    catch (ArgumentOutOfRangeException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
    catch (ArgumentException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
}
  
// Defining the method
// PrintIndexAndValues
public static void PrintIndexAndValues(byte[] myArr)
{
    int count = 0;
    for (int i = 0; i < myArr.Length; i++) {
  
        if (count == 18) {
            Console.WriteLine();
            Console.Write("{0} ", myArr[i]);
            count = 0;
        }
        else {
            Console.Write("{0} ", myArr[i]);
            count++;
        }
    }
  
    Console.WriteLine();
    Console.WriteLine();
}
}


Output:

Initial Array: 
0 0 1 2 7 126 78 55 255 78 45 198 200 1 1 1 1 255 
255 2 4 4 77 77 77 77 77 0 1 0 0 1 2 7 126 78 55 
255 78 45 198 200 1 1 1 1 255 255 2 4 4 255 255 255 255 245 
245 245 245 245 245 245 245 245 245 0 0 0 0 0 0 0 0 6 5 
6 56 31 31 31 54 23 253 

index        Array elements                    double values

  4        07-7E-4E-37-FF-4E-2D-C6         -1.16103254047091E+30
  12        C8-01-01-01-01-FF-FF-02         3.13113229681351E-294
  20        04-04-4D-4D-4D-4D-4D-00         3.25995134720157E-307
  28        01-00-00-01-02-07-7E-4E         1.29525825666467E+70
  36        37-FF-4E-2D-C6-C8-01-01         8.10420695824091E-304
  44        01-01-FF-FF-02-04-04-FF         -6.86302832487538E+303
  52        FF-FF-FF-F5-F5-F5-F5-F5         -1.68827860814431E+260
  60        F5-F5-F5-F5-F5-00-00-00         5.21927749055768E-312
  68        00-00-00-00-00-06-05-06         1.15818454395586E-279

startIndex is equal to the length of bytes minus 7
Exception Thrown: System.ArgumentException

Example 3: For ArgumentOutOfRangeException




// C# program to demonstrate
// BitConverter.ToDouble(Byte[], Int32)
// Method
using System;
  
class GFG {
  
// Main Method
public static void Main()
{
  
    try {
  
        // Define an array of byte values.
        byte[] bytes = {0,0,1,2,7,126,78,55,
                    255,78,45,198,200,1,
                    1,1,1,255,255,2,4,4,
                    77,77,77,77,77,0,1,
                    0,0,1,2,7,126,78,55,
                    255,78,45,198,200,1,
                    1,1,1,255,255,2,4,4,
                    255,255,255,255,245,
                    245,245,245,245,245,
                    245,245,245,245,0,0,
                    0,0,0,0,0,0,6,5,6,56,
                    31,31,31,54,23,253,};
  
        // Display the values of the myArr.
        Console.WriteLine("Initial Array: ");
  
        // calling the PrintIndexAndValues()
        // method to print
        PrintIndexAndValues(bytes);
  
        // getting double value and Display it
        Console.WriteLine("startIndex is less than zero");
        double values = BitConverter.ToDouble(bytes, -1);
        Console.WriteLine(" {0}     {1}         {2}", -1,
                 BitConverter.ToString(bytes, -1, 8),
                                             values);
    }
    catch (ArgumentNullException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
    catch (ArgumentOutOfRangeException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
    catch (ArgumentException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
}
  
// Defining the method
// PrintIndexAndValues
public static void PrintIndexAndValues(byte[] myArr)
{
    int count = 0;
    for (int i = 0; i < myArr.Length; i++) {
  
        if (count == 18) {
            Console.WriteLine();
            Console.Write("{0} ", myArr[i]);
            count = 0;
        }
        else {
            Console.Write("{0} ", myArr[i]);
            count++;
        }
    }
  
    Console.WriteLine();
    Console.WriteLine();
}
}


Output:

Initial Array: 
0 0 1 2 7 126 78 55 255 78 45 198 200 1 1 1 1 255 
255 2 4 4 77 77 77 77 77 0 1 0 0 1 2 7 126 78 55 
255 78 45 198 200 1 1 1 1 255 255 2 4 4 255 255 255 255 245 
245 245 245 245 245 245 245 245 245 0 0 0 0 0 0 0 0 6 5 
6 56 31 31 31 54 23 253 

startIndex is less than zero
Exception Thrown: System.ArgumentOutOfRangeException

Example 4: For ArgumentNullException




// C# program to demonstrate
// BitConverter.ToDouble(Byte[], Int32)
// Method
using System;
  
class GFG {
  
// Main Method
public static void Main()
{
  
    try {
  
        // Define an array of byte values.
        byte[] bytes = null;
  
        // getting double value and Display it
        Console.WriteLine("array bytes is null");
        double values = BitConverter.ToDouble(bytes, 0);
        Console.WriteLine(" {0}     {1}         {2}", 0,
          BitConverter.ToString(bytes, 0, 8), values);
    }
    catch (ArgumentNullException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
    catch (ArgumentOutOfRangeException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
    catch (ArgumentException e) {
  
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
}
  
// Defining the method
// PrintIndexAndValues
public static void PrintIndexAndValues(byte[] myArr)
{
    int count = 0;
    for (int i = 0; i < myArr.Length; i++) {
  
        if (count == 18) {
            Console.WriteLine();
            Console.Write("{0} ", myArr[i]);
            count = 0;
        }
        else {
            Console.Write("{0} ", myArr[i]);
            count++;
        }
    }
  
    Console.WriteLine();
    Console.WriteLine();
}
}


Output:

array bytes is null
Exception Thrown: System.ArgumentNullException

Reference:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads