Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe BitConverter

Converte i tipi di dati di base in una matrice di byte e viceversa.

Spazio dei nomi:  System
Assembly:  mscorlib (in mscorlib.dll)

public static class BitConverter

Il tipo BitConverter espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoMembro staticoSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreDoubleToInt64BitsConverte il numero in virgola mobile e precisione doppia specificato in un intero con segno a 64 bit.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(Boolean)Restituisce il valore Boolean specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(Char)Restituisce il valore del carattere Unicode specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(Double)Restituisce il valore in virgola mobile e precisione doppia specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(Int16)Restituisce il valore dell'integer con segno a 16 bit specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(Int32)Restituisce il valore dell'integer con segno a 32 bit specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(Int64)Restituisce il valore dell'integer con segno a 64 bit specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(Single)Restituisce il valore in virgola mobile e precisione singola specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(UInt16)Restituisce il valore dell'integer senza segno a 16 bit specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(UInt32)Restituisce il valore dell'integer senza segno a 32 bit specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBytes(UInt64)Restituisce il valore dell'integer senza segno a 64 bit specificato come matrice di byte.
Metodo pubblicoMembro staticoSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreInt64BitsToDoubleConverte l'intero con segno a 64 bit specificato in un numero in virgola mobile e precisione doppia.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToBooleanRestituisce un valore Boolean convertito da un byte in una posizione specificata in una matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToCharRestituisce un carattere Unicode convertito da due byte nella posizione specificata in una matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToDoubleRestituisce un numero in virgola mobile e precisione doppia convertito da otto byte nella posizione specificata in una matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToInt16Restituisce un intero con segno a 16 bit convertito da due byte nella posizione specificata in una matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToInt32Restituisce un intero con segno a 32 bit convertito da quattro byte nella posizione specificata in una matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToInt64Restituisce un intero con segno a 64 bit convertito da otto byte nella posizione specificata in una matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToSingleRestituisce un numero in virgola mobile e precisione singola convertito da quattro byte nella posizione specificata in una matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString(Byte[])Converte il valore numerico di ogni elemento di una matrice specificata di byte nella relativa rappresentazione di stringa esadecimale equivalente.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString(Byte[], Int32)Converte il valore numerico di ogni elemento di una sottomatrice specificata di byte nella relativa rappresentazione di stringa esadecimale equivalente.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString(Byte[], Int32, Int32)Converte il valore numerico di ogni elemento di una sottomatrice specificata di byte nella relativa rappresentazione di stringa esadecimale equivalente.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToUInt16Restituisce un intero senza segno a 16 bit convertito da due byte nella posizione specificata in una matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToUInt32Restituisce un intero senza segno a 32 bit convertito da quattro byte nella posizione specificata in una matrice di byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToUInt64Restituisce un intero senza segno a 64 bit convertito da otto byte nella posizione specificata in una matrice di byte.
In alto

  NomeDescrizione
Campo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreIsLittleEndianIndica l'ordine dei byte (caratteristica endian) per la memorizzazione dei dati all'interno dell'architettura di computer in uso.
In alto

La classe BitConverter consente di modificare i tipi di valori nella loro forma fondamentale, come serie di byte. Un byte è definito come un intero senza segno a 8 bit. La classe BitConverter include metodi statici per convertire ognuno dei tipi primitivi in e da una matrice di byte, come illustrato nella tabella seguente.

Se si utilizzano i metodi BitConverter per eseguire il round trip dei dati, verificare che per l'overload GetBytes e per il metodo TypeTo sia specificato lo stesso tipo. Come viene illustrato nell'esempio seguente, il ripristino di una matrice che rappresenta un intero con segno chiamando il metodo ToUInt32 può determinare un valore diverso dall'originale. Per ulteriori informazioni, vedere la voce relativa all'utilizzo dei valori non decimali con segno e bit per bit in BCL Team Blog.


using System;

public class Example
{
   public static void Main()
   {
      int value = -16;
      Byte[] bytes = BitConverter.GetBytes(value); 

      // Convert bytes back to Int32.
      int intValue = BitConverter.ToInt32(bytes, 0);
      Console.WriteLine("{0} = {1}: {2}", 
                        value, intValue, 
                        value.Equals(intValue) ? "Round-trips" : "Does not round-trip");
      // Convert bytes to UInt32.
      uint uintValue = BitConverter.ToUInt32(bytes, 0);
      Console.WriteLine("{0} = {1}: {2}", value, uintValue, 
                        value.Equals(uintValue) ? "Round-trips" : "Does not round-trip");
   }
}
// The example displays the following output:
//       -16 = -16: Round-trips
//       -16 = 4294967280: Does not round-trip


L'ordine di byte nella matrice restituita dagli overload del metodo GetBytes (nonché l'ordine di bit nell'intero restituito dal metodo DoubleToInt64Bits e l'ordine di stringhe esadecimali restituite dal metodo ToString(Byte[])) varia a seconda se l'architettura del computer è little-endian o big-endian. Analogamente, l'ordine dei byte nella matrice e restituito dai metodi ToIntegerValue e dal metodo ToChar dipende dal fatto che l'architettura del computer sia di tipo little endian o big endian. La caratteristica endian di un'architettura viene indicata dalla proprietà IsLittleEndian, che restituisce true in sistemi little-endian e false in quelli big-endian. Nei sistemi little-endian, byte meno significativi precedono byte più significativi. Nel sistema big-endian, byte più significativi precedono byte meno significativi. Nella tabella seguente viene illustrata la differenza nelle matrici di byte generate dal passaggio dell'intero 1.234.567.890 (0x499602D2) al metodo GetBytes(Int32). I byte sono elencati in ordine a partire dal byte in corrispondenza dell'indice 0 al byte in corrispondenza dell'indice 3.

Little-endian

D2-02-96-49

Big-endian

49-96-02-D2

Poiché il valore restituito di alcuni metodi dipende dall'architettura del sistema, prestare attenzione durante la trasmissione dei dati byte oltre i limiti del computer:

  • Se tutti i sistemi che inviano e ricevono dati dispongono della stessa caratteristica endian, per tali dati non è richiesta alcuna operazione.

  • Se i sistemi che inviano e ricevono dati possono disporre di caratteristiche endian differenti, trasmettere i dati sempre in un ordine specifico. Pertanto, potrebbe essere necessario invertire l'ordine di byte nella matrice prima dell'invio o dopo la ricezione. Una convenzione comune consiste nel trasmettere i dati nell'ordine dei byte della rete (ordine big-endian). Nell'esempio seguente viene fornita un'implementazione per l'invio di un valore intero nell'ordine dei byte della rete.

    
    using System;
    
    public class Example
    {
       public static void Main()
       {
          int value = 12345678;
          byte[] bytes = BitConverter.GetBytes(value);
          Console.WriteLine(BitConverter.ToString(bytes));
    
          if (BitConverter.IsLittleEndian)
             Array.Reverse(bytes); 
    
          Console.WriteLine(BitConverter.ToString(bytes));
          // Call method to send byte stream across machine boundaries.
    
          // Receive byte stream from beyond machine boundaries.
          Console.WriteLine(BitConverter.ToString(bytes));
          if (BitConverter.IsLittleEndian)
             Array.Reverse(bytes);
    
          Console.WriteLine(BitConverter.ToString(bytes));
          int result = BitConverter.ToInt32(bytes, 0);
          Console.WriteLine("Original value: {0}", value);
          Console.WriteLine("Returned value: {0}", result);
       }
    }
    // The example displays the following output on a little-endian system:
    //       4E-61-BC-00
    //       00-BC-61-4E
    //       00-BC-61-4E
    //       4E-61-BC-00
    //       Original value: 12345678
    //       Returned value: 12345678
    
    
    
  • Se i sistemi che inviano e ricevono dati possono disporre di caratteristiche endian differenti e i dati da trasmettere sono costituiti da interi con segno, chiamare il metodo IPAddress.HostToNetworkOrder per convertire i dati nell'ordine dei byte della rete e il metodo IPAddress.NetworkToHostOrder per convertirli nell'ordine richiesto dal destinatario.

Nell'esempio di codice riportato di seguito viene illustrato l'utilizzo di diversi metodi della classe BitConverter.


// Example of BitConverter class methods.
using System;

class BitConverterDemo
{
    public static void Main( )
    {
        const string formatter = "{0,25}{1,30}";

        double  aDoubl  = 0.1111111111111111111;
        float   aSingl  = 0.1111111111111111111F;
        long    aLong   = 1111111111111111111;
        int     anInt   = 1111111111;
        short   aShort  = 11111;
        char    aChar   = '*';
        bool    aBool   = true;

        Console.WriteLine( 
            "This example of methods of the BitConverter class" +
            "\ngenerates the following output.\n" );
        Console.WriteLine( formatter, "argument", "byte array" );
        Console.WriteLine( formatter, "--------", "----------" );

        // Convert values to Byte arrays and display them.
        Console.WriteLine( formatter, aDoubl, 
            BitConverter.ToString( BitConverter.GetBytes( aDoubl ) ) );
        Console.WriteLine( formatter, aSingl, 
            BitConverter.ToString( BitConverter.GetBytes( aSingl ) ) );
        Console.WriteLine( formatter, aLong, 
            BitConverter.ToString( BitConverter.GetBytes( aLong ) ) );
        Console.WriteLine( formatter, anInt, 
            BitConverter.ToString( BitConverter.GetBytes( anInt ) ) );
        Console.WriteLine( formatter, aShort, 
            BitConverter.ToString( BitConverter.GetBytes( aShort ) ) );
        Console.WriteLine( formatter, aChar, 
            BitConverter.ToString( BitConverter.GetBytes( aChar ) ) );
        Console.WriteLine( formatter, aBool, 
            BitConverter.ToString( BitConverter.GetBytes( aBool ) ) );
    }
}

/*
This example of methods of the BitConverter class
generates the following output.

                 argument                    byte array
                 --------                    ----------
        0.111111111111111       1C-C7-71-1C-C7-71-BC-3F
                0.1111111                   39-8E-E3-3D
      1111111111111111111       C7-71-C4-2B-AB-75-6B-0F
               1111111111                   C7-35-3A-42
                    11111                         67-2B
                        *                         2A-00
                     True                            01
*/


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft