BitConverter Classe
TOC
Réduire la table des matières
Développer la table des matières
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

 

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)

System.Object
  System.BitConverter

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 un 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 de l'ordinateur.

La BitConverter classe facilite la manipulation des types valeur sous 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 pour effectuer un aller-retour des données, assurez-vous que le GetBytes de surcharge et 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 celui d'origine. 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 le GetBytes surcharges de méthode (ainsi que l'ordre des octets dans l'entier retourné par le 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 ToChar méthode varie selon que l'architecture de l'ordinateur est little-endian ou big-endian. L'endianness d'une architecture est indiqué par le IsLittleEndian propriété, qui renvoie true sur les systèmes 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 big-endian, primauté des octets précèdent 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

La valeur de retour de certaines méthodes dépend de l'architecture du système, soyez attentif lors de la transmission des données de type octet au-delà des limites de l'ordinateur :

  • Si tous les systèmes de l'envoi et la réception des données garanties que l'endianness même, rien n'a fait pour les données.

  • Si les systèmes d'envoi et réception de données peuvent avoir différents endianness, transmettez toujours les données dans un ordre particulier. Cela signifie que l'ordre des octets dans le tableau peut avoir à être inversé avant leur envoi ou après leur réception. Une convention commune consiste à transmettre des données dans l'ordre des octets réseau (ordre big-endian). L'exemple suivant fournit une implémentation pour l'envoi d'une valeur entière dans l'ordre des octets 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 avoir endianness différents et les données à transmettre est constitué d'entiers signés, appelez le IPAddress.HostToNetworkOrder méthode pour convertir les données réseau et IPAddress.NetworkToHostOrder méthode pour le convertir en 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
*/

Universal Windows Platform
Disponible depuis 8
.NET Framework
Disponible depuis 1.1
Portable Class Library
Pris en charge dans : portable .NET platforms
Silverlight
Disponible depuis 2.0
Windows Phone Silverlight
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1

Tous les membres statiques (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Retour au début
Afficher:
© 2016 Microsoft