Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

BitConverter classe

 

Date de publication : novembre 2016

Convertit des types de données de base en un tableau d'octets, et un tableau d'octets en types de données de base.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)


public static class BitConverter

NomDescription
System_CAPS_pubmethodSystem_CAPS_staticDoubleToInt64Bits(Double)

Convertit le nombre à virgule flottante double précision spécifié en un entier signé 64 bits.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Boolean)

Retourne la valeur booléenne spécifiée en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Char)

Retourne la valeur du caractère Unicode spécifiée en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Double)

Retourne la valeur à virgule flottante double précision spécifié en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Int16)

Retourne la valeur de l’entier signé de 16 bits spécifié en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Int32)

Retourne la valeur de l’entier signé de 32 bits spécifié en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Int64)

Retourne la valeur de l’entier signé 64 bits spécifié en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Single)

Retourne la valeur à virgule flottante simple précision spécifié en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(UInt16)

Retourne la valeur de l’entier non signé de 16 bits spécifié en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(UInt32)

Retourne la valeur de l’entier non signé de 32 bits spécifié en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(UInt64)

Retourne la valeur de l’entier non signé de 64 bits spécifié en tant que tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticInt64BitsToDouble(Int64)

Convertit l’entier signé 64 bits spécifié en nombre à virgule flottante double précision.

System_CAPS_pubmethodSystem_CAPS_staticToBoolean(Byte[], Int32)

Retourne une valeur booléenne convertie à partir de l’octet à la position spécifiée dans un tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticToChar(Byte[], Int32)

Retourne un caractère Unicode converti à partir de deux octets à une position spécifiée dans un tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticToDouble(Byte[], Int32)

Retourne un nombre à virgule flottante double précision converti à partir de huit octets à une position spécifiée dans un tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticToInt16(Byte[], Int32)

Retourne un entier signé 16 bits converti à partir de deux octets à une position spécifiée dans un tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticToInt32(Byte[], Int32)

Retourne un entier signé 32 bits converti à partir de quatre octets à une position spécifiée dans un tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticToInt64(Byte[], Int32)

Retourne un entier signé 64 bits converti à partir de huit octets à une position spécifiée dans un tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticToSingle(Byte[], Int32)

Retourne un nombre à virgule flottante simple précision converti à partir de quatre octets à une position spécifiée dans un tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticToString(Byte[])

Convertit la valeur numérique de chaque élément d’un tableau d’octets spécifié en sa représentation sous forme de chaîne hexadécimale équivalente.

System_CAPS_pubmethodSystem_CAPS_staticToString(Byte[], Int32)

Convertit la valeur numérique de chaque élément d’un sous-tableau d’octets spécifié en sa représentation sous forme de chaîne hexadécimale équivalente.

System_CAPS_pubmethodSystem_CAPS_staticToString(Byte[], Int32, Int32)

Convertit la valeur numérique de chaque élément d’un sous-tableau d’octets spécifié en sa représentation sous forme de chaîne hexadécimale équivalente.

System_CAPS_pubmethodSystem_CAPS_staticToUInt16(Byte[], Int32)

Retourne un entier non signé 16 bits converti à partir de deux octets à une position spécifiée dans un tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticToUInt32(Byte[], Int32)

Retourne un entier non signé 32 bits converti à partir de quatre octets à une position spécifiée dans un tableau d’octets.

System_CAPS_pubmethodSystem_CAPS_staticToUInt64(Byte[], Int32)

Retourne un entier non signé 64 bits converti à partir de huit octets à une position spécifiée dans un tableau d’octets.

NomDescription
System_CAPS_pubfieldSystem_CAPS_staticIsLittleEndian

Indique l’ordre d’octet (« endianness ») dans lequel les données sont stockées dans cette architecture d’ordinateur.

La BitConverter classe facilite la manipulation des types valeur dans leur forme de base, comme une série d’octets. Un octet est défini comme un entier non signé 8 bits. La BitConverter classe inclut des méthodes statiques pour convertir chacun des types primitifs vers et à partir d’un tableau d’octets, comme l’illustre le tableau suivant.

Type

Pour la conversion d’octets

À partir de la conversion d’octets

Boolean

GetBytes(Boolean)

ToBoolean

Char

GetBytes(Char)

ToChar

Double

GetBytes(Double)

ou

DoubleToInt64Bits(Double)

ToDouble

ou

Int64BitsToDouble

Int16

GetBytes(Int16)

ToInt16

Int32

GetBytes(Int32)

ToInt32

Int64

GetBytes(Int64)

ToInt64

Single

GetBytes(Single)

ToSingle

UInt16

GetBytes(UInt16)

ToUInt16

UInt32

GetBytes(UInt32)

ToUInt32

UInt64

GetBytes(UInt64)

ToUInt64

Si vous utilisez BitConverter méthodes aux données aller-retour, assurez-vous que le GetBytes de surcharge et la ToType méthode spécifient le même type. Comme l’illustre l’exemple suivant, restaurer un tableau qui représente un entier signé en appelant le ToUInt32 méthode peut entraîner une valeur qui est différente de l’original. Pour plus d’informations, consultez l’entrée Working with Signed Non-Decimal and Bitwise Values dans le Blog de l’équipe BCL.

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’ordre des octets dans le tableau retourné par la GetBytes surcharges de méthode (ainsi que l’ordre des octets dans l’entier retourné par la DoubleToInt64Bits (méthode) et l’ordre des chaînes hexadécimales retourné par le ToString(Byte[]) (méthode)) varie selon que l’architecture de l’ordinateur est little-endian ou big-endian. De même, l’ordre des octets dans le tableau et retournée par la ToIntegerValue méthodes et les ToChar méthode varie selon que l’architecture de l’ordinateur est little-endian ou big-endian. L’ordre primauté des octets d’une architecture sont indiqué par le IsLittleEndian propriété qui retourne true sur les systèmes de little-endian et false sur les systèmes de big-endian. Sur les systèmes de primauté des octets de poids faible précèdent primauté des octets. Sur le système de big-endian, primauté des octets, faites précéder les octets de poids faible. Le tableau suivant illustre la différence dans les tableaux d’octets qui résultent du passage de l’entier 1 234 567 890 (0x499602D2) pour le GetBytes(Int32) (méthode). Les octets sont répertoriés dans l’ordre d’octet à partir de l’index 0 à l’octet à l’index 3.

Little-endian.

D2-02-96-49

Big-endian.

49-96-02-D2

Étant donné que la valeur de retour de certaines méthodes dépend de l’architecture système, soyez prudent lors de la transmission des données de type octet au-delà des limites de l’ordinateur :

  • Si tous les systèmes à envoyer et recevoir des données garanties que le même endianness, rien n’a effectué pour les données.

  • Si les systèmes d’envoi et réception de données peuvent avoir différents endianismes, transmettez toujours les données dans un ordre particulier. Cela signifie que l’ordre des octets dans le tableau peut avoir à être annulée avant leur envoi ou après leur réception. Il convient généralement de transmettre des données dans l’ordre d’octets réseau (ordre big-endian). L’exemple suivant fournit une implémentation pour l’envoi d’une valeur entière dans l’ordre d’octet du réseau.

    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
    
  • Si les systèmes d’envoi et réception de données peuvent disposer de différents endianismes et les données à transmettre se composent d’entiers signés, appelez le IPAddress.HostToNetworkOrder méthode pour convertir les données réseau et le IPAddress.NetworkToHostOrder méthode pour le convertir dans l’ordre requis par le destinataire.

L’exemple de code suivant illustre l’utilisation de plusieurs BitConverter méthodes de la classe.

// 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
*/

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: