BitConverter.ToDouble Método

Definición

Sobrecargas

ToDouble(ReadOnlySpan<Byte>)

Convierte un intervalo de bytes de solo lectura en un valor de punto flotante de precisión doble.Converts a read-only byte span into a double-precision floating-point value.

ToDouble(Byte[], Int32)

Devuelve un número de punto flotante de precisión doble convertido a partir de ocho bytes en la posición especificada de una matriz de bytes.Returns a double-precision floating point number converted from eight bytes at a specified position in a byte array.

ToDouble(ReadOnlySpan<Byte>)

Convierte un intervalo de bytes de solo lectura en un valor de punto flotante de precisión doble.Converts a read-only byte span into a double-precision floating-point value.

public:
 static double ToDouble(ReadOnlySpan<System::Byte> value);
public static double ToDouble (ReadOnlySpan<byte> value);
static member ToDouble : ReadOnlySpan<byte> -> double
Public Shared Function ToDouble (value As ReadOnlySpan(Of Byte)) As Double

Parámetros

value
ReadOnlySpan<Byte>

Intervalo de solo lectura que contiene los bytes que se van a convertir.A read-only span containing the bytes to convert.

Devoluciones

Valor de punto flotante de precisión doble que representa los bytes convertidos.A double-precision floating-point value that represents the converted bytes.

Excepciones

La longitud de value es menor que la longitud de un valor Double.The length of value is less than the length of a Double value.

ToDouble(Byte[], Int32)

Devuelve un número de punto flotante de precisión doble convertido a partir de ocho bytes en la posición especificada de una matriz de bytes.Returns a double-precision floating point number converted from eight bytes at a specified position in a byte array.

public:
 static double ToDouble(cli::array <System::Byte> ^ value, int startIndex);
public static double ToDouble (byte[] value, int startIndex);
static member ToDouble : byte[] * int -> double
Public Shared Function ToDouble (value As Byte(), startIndex As Integer) As Double

Parámetros

value
Byte[]

Matriz de bytes.An array of bytes.

startIndex
Int32

Posición inicial de value.The starting position within value.

Devoluciones

Número de punto flotante de precisión doble formado por ocho bytes que comienzan en startIndex.A double precision floating point number formed by eight bytes beginning at startIndex.

Excepciones

El parámetro startIndex es mayor o igual que la longitud de value menos 7 y es menor o igual que la longitud de value menos 1.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.

value es null.value is null.

startIndex es menor que cero o mayor que la longitud de value menos 1.startIndex is less than zero or greater than the length of value minus 1.

Ejemplos

En el ejemplo de código siguiente se convierten los elementos de las matrices Byte a valores Double con el método ToDouble.The following code example converts elements of Byte arrays to Double values with the ToDouble method.

// Example of the BitConverter::ToDouble method.
using namespace System;

// Convert eight byte array elements to a double and display it.
void BAToDouble( array<unsigned char>^bytes, int index )
{
   double value = BitConverter::ToDouble( bytes, index );
   Console::WriteLine( "{0,5}{1,27}{2,27:E16}", index, BitConverter::ToString( bytes, index, 8 ), value );
}


// Display a byte array, using multiple lines if necessary.
void WriteMultiLineByteArray( array<unsigned char>^bytes )
{
   const int rowSize = 20;
   int iter;
   Console::WriteLine( "initial unsigned char array" );
   Console::WriteLine( "---------------------------" );
   for ( iter = 0; iter < bytes->Length - rowSize; iter += rowSize )
   {
      Console::Write( BitConverter::ToString( bytes, iter, rowSize ) );
      Console::WriteLine( "-" );

   }
   Console::WriteLine( BitConverter::ToString( bytes, iter ) );
   Console::WriteLine();
}

int main()
{
   array<unsigned char>^byteArray = {0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,224,111,64,0,0,224,255,255,255,239,65,0,0,0,0,0,0,112,63,0,0,0,0,0,0,240,61,223,136,30,28,254,116,170,1,250,89,140,66,202,192,243,63,251,89,140,66,202,192,243,63,252,89,140,66,202,192,243,63,82,211,187,188,232,126,61,126,255,255,255,255,255,255,239,255,255,255,255,255,255,239,127,1,0,0,0,0,0,0,0,248,255,0,0,0,0,0,0,240,255,0,0,0,0,0,0,240,127};
   Console::WriteLine( "This example of the BitConverter::ToDouble( unsigned "
   "char[ ], int ) \nmethod generates the following output. It "
   "converts elements of a \nbyte array to double values.\n" );
   WriteMultiLineByteArray( byteArray );
   Console::WriteLine( "{0,5}{1,27}{2,27:E16}", "index", "array elements", "double" );
   Console::WriteLine( "{0,5}{1,27}{2,27:E16}", "-----", "--------------", "------" );
   
   // Convert byte array elements to double values.
   BAToDouble( byteArray, 0 );
   BAToDouble( byteArray, 2 );
   BAToDouble( byteArray, 10 );
   BAToDouble( byteArray, 18 );
   BAToDouble( byteArray, 26 );
   BAToDouble( byteArray, 34 );
   BAToDouble( byteArray, 42 );
   BAToDouble( byteArray, 50 );
   BAToDouble( byteArray, 58 );
   BAToDouble( byteArray, 66 );
   BAToDouble( byteArray, 74 );
   BAToDouble( byteArray, 82 );
   BAToDouble( byteArray, 89 );
   BAToDouble( byteArray, 97 );
   BAToDouble( byteArray, 99 );
   BAToDouble( byteArray, 107 );
   BAToDouble( byteArray, 115 );
}

/*
This example of the BitConverter.ToDouble( byte( ), int )
method generates the following output. It converts elements
of a byte array to double values.

initial byte array
------------------
00-00-00-00-00-00-00-00-F0-3F-00-00-00-00-00-E0-6F-40-00-00-
E0-FF-FF-FF-EF-41-00-00-00-00-00-00-70-3F-00-00-00-00-00-00-
F0-3D-DF-88-1E-1C-FE-74-AA-01-FA-59-8C-42-CA-C0-F3-3F-FB-59-
8C-42-CA-C0-F3-3F-FC-59-8C-42-CA-C0-F3-3F-52-D3-BB-BC-E8-7E-
3D-7E-FF-FF-FF-FF-FF-FF-EF-FF-FF-FF-FF-FF-FF-EF-7F-01-00-00-
00-00-00-00-00-F8-FF-00-00-00-00-00-00-F0-FF-00-00-00-00-00-
00-F0-7F

index             array elements                     double
-----             --------------                     ------
    0    00-00-00-00-00-00-00-00    0.0000000000000000E+000
    2    00-00-00-00-00-00-F0-3F    1.0000000000000000E+000
   10    00-00-00-00-00-E0-6F-40    2.5500000000000000E+002
   18    00-00-E0-FF-FF-FF-EF-41    4.2949672950000000E+009
   26    00-00-00-00-00-00-70-3F    3.9062500000000000E-003
   34    00-00-00-00-00-00-F0-3D    2.3283064365386963E-010
   42    DF-88-1E-1C-FE-74-AA-01    1.2345678901234500E-300
   50    FA-59-8C-42-CA-C0-F3-3F    1.2345678901234565E+000
   58    FB-59-8C-42-CA-C0-F3-3F    1.2345678901234567E+000
   66    FC-59-8C-42-CA-C0-F3-3F    1.2345678901234569E+000
   74    52-D3-BB-BC-E8-7E-3D-7E    1.2345678901234569E+300
   82    FF-FF-FF-FF-FF-FF-EF-FF   -1.7976931348623157E+308
   89    FF-FF-FF-FF-FF-FF-EF-7F    1.7976931348623157E+308
   97    01-00-00-00-00-00-00-00    4.9406564584124654E-324
   99    00-00-00-00-00-00-F8-FF                        NaN
  107    00-00-00-00-00-00-F0-FF                  -Infinity
  115    00-00-00-00-00-00-F0-7F                   Infinity
*/
// Example of the BitConverter.ToDouble method.
using System;

class BytesToDoubleDemo
{
    const string formatter = "{0,5}{1,27}{2,27:E16}";
 
    // Convert eight byte array elements to a double and display it.
    public static void BAToDouble( byte[ ] bytes, int index )
    {
        double value = BitConverter.ToDouble( bytes, index );

        Console.WriteLine( formatter, index, 
            BitConverter.ToString( bytes, index, 8 ), value );
    }

    // Display a byte array, using multiple lines if necessary.
    public static void WriteMultiLineByteArray( byte[ ] bytes )
    {
        const int rowSize = 20;
        int iter;

        Console.WriteLine( "initial byte array" );
        Console.WriteLine( "------------------" );

        for( iter = 0; iter < bytes.Length - rowSize; iter += rowSize )
        {
            Console.Write( 
                BitConverter.ToString( bytes, iter, rowSize ) );
            Console.WriteLine( "-" );
        }

        Console.WriteLine( BitConverter.ToString( bytes, iter ) );
        Console.WriteLine( );
    }

    public static void Main( )
    {
        byte[ ] byteArray = {
              0,   0,   0,   0,   0,   0,   0,   0, 240,  63, 
              0,   0,   0,   0,   0, 224, 111,  64,   0,   0, 
            224, 255, 255, 255, 239,  65,   0,   0,   0,   0, 
              0,   0, 112,  63,   0,   0,   0,   0,   0,   0, 
            240,  61, 223, 136,  30,  28, 254, 116, 170,   1, 
            250,  89, 140,  66, 202, 192, 243,  63, 251,  89, 
            140,  66, 202, 192, 243,  63, 252,  89, 140,  66, 
            202, 192, 243,  63,  82, 211, 187, 188, 232, 126, 
             61, 126, 255, 255, 255, 255, 255, 255, 239, 255, 
            255, 255, 255, 255, 255, 239, 127,   1,   0,   0, 
              0,   0,   0,   0,   0, 248, 255,   0,   0,   0, 
              0,   0,   0, 240, 255,   0,   0,   0,   0,   0, 
              0, 240, 127 };

        Console.WriteLine( 
            "This example of the BitConverter.ToDouble( byte[ ], " +
            "int ) \nmethod generates the following output. It " +
            "converts elements \nof a byte array to double values.\n" );

        WriteMultiLineByteArray( byteArray );

        Console.WriteLine( formatter, "index", "array elements", 
            "double" );
        Console.WriteLine( formatter, "-----", "--------------", 
            "------" );
          
        // Convert byte array elements to double values.
        BAToDouble( byteArray, 0 );
        BAToDouble( byteArray, 2 );
        BAToDouble( byteArray, 10 );
        BAToDouble( byteArray, 18 );
        BAToDouble( byteArray, 26 );
        BAToDouble( byteArray, 34 );
        BAToDouble( byteArray, 42 );
        BAToDouble( byteArray, 50 );
        BAToDouble( byteArray, 58 );
        BAToDouble( byteArray, 66 );
        BAToDouble( byteArray, 74 );
        BAToDouble( byteArray, 82 );
        BAToDouble( byteArray, 89 );
        BAToDouble( byteArray, 97 );
        BAToDouble( byteArray, 99 );
        BAToDouble( byteArray, 107 );
        BAToDouble( byteArray, 115 );
    }
}

/*
This example of the BitConverter.ToDouble( byte[ ], int )
method generates the following output. It converts elements
of a byte array to double values.

initial byte array
------------------
00-00-00-00-00-00-00-00-F0-3F-00-00-00-00-00-E0-6F-40-00-00-
E0-FF-FF-FF-EF-41-00-00-00-00-00-00-70-3F-00-00-00-00-00-00-
F0-3D-DF-88-1E-1C-FE-74-AA-01-FA-59-8C-42-CA-C0-F3-3F-FB-59-
8C-42-CA-C0-F3-3F-FC-59-8C-42-CA-C0-F3-3F-52-D3-BB-BC-E8-7E-
3D-7E-FF-FF-FF-FF-FF-FF-EF-FF-FF-FF-FF-FF-FF-EF-7F-01-00-00-
00-00-00-00-00-F8-FF-00-00-00-00-00-00-F0-FF-00-00-00-00-00-
00-F0-7F

index             array elements                     double
-----             --------------                     ------
    0    00-00-00-00-00-00-00-00    0.0000000000000000E+000
    2    00-00-00-00-00-00-F0-3F    1.0000000000000000E+000
   10    00-00-00-00-00-E0-6F-40    2.5500000000000000E+002
   18    00-00-E0-FF-FF-FF-EF-41    4.2949672950000000E+009
   26    00-00-00-00-00-00-70-3F    3.9062500000000000E-003
   34    00-00-00-00-00-00-F0-3D    2.3283064365386963E-010
   42    DF-88-1E-1C-FE-74-AA-01    1.2345678901234500E-300
   50    FA-59-8C-42-CA-C0-F3-3F    1.2345678901234565E+000
   58    FB-59-8C-42-CA-C0-F3-3F    1.2345678901234567E+000
   66    FC-59-8C-42-CA-C0-F3-3F    1.2345678901234569E+000
   74    52-D3-BB-BC-E8-7E-3D-7E    1.2345678901234569E+300
   82    FF-FF-FF-FF-FF-FF-EF-FF   -1.7976931348623157E+308
   89    FF-FF-FF-FF-FF-FF-EF-7F    1.7976931348623157E+308
   97    01-00-00-00-00-00-00-00    4.9406564584124654E-324
   99    00-00-00-00-00-00-F8-FF                        NaN
  107    00-00-00-00-00-00-F0-FF                  -Infinity
  115    00-00-00-00-00-00-F0-7F                   Infinity
*/
' Example of the BitConverter.ToDouble method.
Module BytesToDoubleDemo

    Const formatter As String = "{0,5}{1,27}{2,27:E16}"
 
    ' Convert eight Byte array elements to a Double and display it.
    Sub BAToDouble( bytes( ) As Byte, index As Integer )

        Dim value As Double = BitConverter.ToDouble( bytes, index )

        Console.WriteLine( formatter, index, _
            BitConverter.ToString( bytes, index, 8 ), value )
    End Sub 

    ' Display a Byte array, using multiple lines if necessary.
    Sub WriteMultiLineByteArray( bytes( ) As Byte )
       
        Const rowSize As Integer = 20 
        Dim iter As Integer

        Console.WriteLine( "initial Byte array" )
        Console.WriteLine( "------------------" )

        For iter = 0 To bytes.Length - rowSize - 1 Step rowSize
            Console.Write( _
                BitConverter.ToString( bytes, iter, rowSize ) )
            Console.WriteLine( "-" )
        Next iter

        Console.WriteLine( BitConverter.ToString( bytes, iter ) )
        Console.WriteLine( )
    End Sub

    Sub Main( )
        Dim byteArray as Byte( ) = { _
              0,   0,   0,   0,   0,   0,   0,   0, 240,  63, _
              0,   0,   0,   0,   0, 224, 111,  64,   0,   0, _
            224, 255, 255, 255, 239,  65,   0,   0,   0,   0, _
              0,   0, 112,  63,   0,   0,   0,   0,   0,   0, _
            240,  61, 223, 136,  30,  28, 254, 116, 170,   1, _
            250,  89, 140,  66, 202, 192, 243,  63, 251,  89, _
            140,  66, 202, 192, 243,  63, 252,  89, 140,  66, _
            202, 192, 243,  63,  82, 211, 187, 188, 232, 126, _
             61, 126, 255, 255, 255, 255, 255, 255, 239, 255, _
            255, 255, 255, 255, 255, 239, 127,   1,   0,   0, _
              0,   0,   0,   0,   0, 248, 255,   0,   0,   0, _
              0,   0,   0, 240, 255,   0,   0,   0,   0,   0, _
              0, 240, 127 }

        Console.WriteLine( _
            "This example of the BitConverter.ToDouble( Byte( ), " & _
            "Integer ) " & vbCrLf & "method generates the " & _
            "following output. It converts elements " & vbCrLf & _
            "of a Byte array to Double values." & vbCrLf )

        WriteMultiLineByteArray( byteArray )

        Console.WriteLine( formatter, "index", "array elements", _
            "Double" )
        Console.WriteLine( formatter, "-----", "--------------", _
            "------" )
          
        ' Convert Byte array elements to Double values.
        BAToDouble( byteArray, 0 )
        BAToDouble( byteArray, 2 )
        BAToDouble( byteArray, 10 )
        BAToDouble( byteArray, 18 )
        BAToDouble( byteArray, 26 )
        BAToDouble( byteArray, 34 )
        BAToDouble( byteArray, 42 )
        BAToDouble( byteArray, 50 )
        BAToDouble( byteArray, 58 )
        BAToDouble( byteArray, 66 )
        BAToDouble( byteArray, 74 )
        BAToDouble( byteArray, 82 )
        BAToDouble( byteArray, 89 )
        BAToDouble( byteArray, 97 )
        BAToDouble( byteArray, 99 )
        BAToDouble( byteArray, 107 )
        BAToDouble( byteArray, 115 )
    End Sub 
End Module

' This example of the BitConverter.ToDouble( Byte( ), Integer )
' method generates the following output. It converts elements
' of a Byte array to Double values.
' 
' initial Byte array
' ------------------
' 00-00-00-00-00-00-00-00-F0-3F-00-00-00-00-00-E0-6F-40-00-00-
' E0-FF-FF-FF-EF-41-00-00-00-00-00-00-70-3F-00-00-00-00-00-00-
' F0-3D-DF-88-1E-1C-FE-74-AA-01-FA-59-8C-42-CA-C0-F3-3F-FB-59-
' 8C-42-CA-C0-F3-3F-FC-59-8C-42-CA-C0-F3-3F-52-D3-BB-BC-E8-7E-
' 3D-7E-FF-FF-FF-FF-FF-FF-EF-FF-FF-FF-FF-FF-FF-EF-7F-01-00-00-
' 00-00-00-00-00-F8-FF-00-00-00-00-00-00-F0-FF-00-00-00-00-00-
' 00-F0-7F
' 
' index             array elements                     Double
' -----             --------------                     ------
'     0    00-00-00-00-00-00-00-00    0.0000000000000000E+000
'     2    00-00-00-00-00-00-F0-3F    1.0000000000000000E+000
'    10    00-00-00-00-00-E0-6F-40    2.5500000000000000E+002
'    18    00-00-E0-FF-FF-FF-EF-41    4.2949672950000000E+009
'    26    00-00-00-00-00-00-70-3F    3.9062500000000000E-003
'    34    00-00-00-00-00-00-F0-3D    2.3283064365386963E-010
'    42    DF-88-1E-1C-FE-74-AA-01    1.2345678901234500E-300
'    50    FA-59-8C-42-CA-C0-F3-3F    1.2345678901234565E+000
'    58    FB-59-8C-42-CA-C0-F3-3F    1.2345678901234567E+000
'    66    FC-59-8C-42-CA-C0-F3-3F    1.2345678901234569E+000
'    74    52-D3-BB-BC-E8-7E-3D-7E    1.2345678901234569E+300
'    82    FF-FF-FF-FF-FF-FF-EF-FF   -1.7976931348623157E+308
'    89    FF-FF-FF-FF-FF-FF-EF-7F    1.7976931348623157E+308
'    97    01-00-00-00-00-00-00-00    4.9406564584124654E-324
'    99    00-00-00-00-00-00-F8-FF                        NaN
'   107    00-00-00-00-00-00-F0-FF                  -Infinity
'   115    00-00-00-00-00-00-F0-7F                   Infinity

Comentarios

El método ToDouble convierte los bytes del índice startIndex a startIndex + 7 a un valor Double.The ToDouble method converts the bytes from index startIndex to startIndex + 7 to a Double value. El orden de los bytes de la matriz debe reflejar el modos endian de la arquitectura del sistema del equipo; para obtener más información, vea la sección Comentarios del tema de la clase BitConverter.The order of bytes in the array must reflect the endianness of the computer system's architecture; for more information, see the Remarks section of the BitConverter class topic.

Consulte también:

Se aplica a