当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C# BitConverter.ToDouble()用法及代码示例


BitConverter.ToDouble()方法用于返回双精度浮点数,该浮点数从字节数组中指定位置的八个字节转换而来。

用法:

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

参数:


  • value:它是一个字节数组。
    startIndex:它是值中的起始位置。

返回值:此方法返回一个双精度浮点数,该数由以startIndex开始的八个字节组成。

异常:

  • ArgumentException:如果startIndex大于或等于值的长度减去7,并且小于或等于值的长度减去1。
  • ArgumentNullException:如果值为空。
  • ArgumentOutOfRangeException:如果startIndex小于零或大于值的长度减1。

以下示例程序旨在说明BitConverter.ToDouble(Byte [],Int32)方法的用法:

示例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(); 
} 
}

输出:

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

示例2:对于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(); 
} 
}

输出:

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

示例3:对于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(); 
} 
}

输出:

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

示例4:对于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(); 
} 
}

输出:

array bytes is null
Exception Thrown: System.ArgumentNullException

参考:



相关用法


注:本文由纯净天空筛选整理自RohitPrasad3大神的英文原创作品 C# | BitConverter.ToDouble() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。