Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

BitConverter-Klasse

 

Konvertiert Basisdatentypen in ein Bytearray und ein Bytearray in Basisdatentypen.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.BitConverter

public static class BitConverter

NameBeschreibung
System_CAPS_pubmethodSystem_CAPS_staticDoubleToInt64Bits(Double)

Konvertiert die angegebene Gleitkommazahl mit doppelter Genauigkeit auf eine 64-Bit-Ganzzahl mit Vorzeichen.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Boolean)

Gibt den angegebenen booleschen Wert als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Char)

Gibt den Wert der angegebenen Unicode-Zeichens als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Double)

Gibt den angegebenen Gleitkommawert mit doppelter Genauigkeit als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Int16)

Gibt den Wert der angegebenen 16-Bit-Ganzzahl mit Vorzeichen als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Int32)

Gibt den Wert der angegebenen 32-Bit-Ganzzahl mit Vorzeichen als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Int64)

Gibt den angegebenen ganzzahligen 64-Bit-Wert mit Vorzeichen als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Single)

Gibt den angegebenen Gleitkommawert mit einfacher Genauigkeit als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(UInt16)

Gibt den Wert der angegebenen 16-Bit-Ganzzahl ohne Vorzeichen als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(UInt32)

Gibt den Wert der angegebenen 32-Bit-Ganzzahl ohne Vorzeichen als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(UInt64)

Gibt den Wert der angegebenen 64-Bit-Ganzzahl ohne Vorzeichen als Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticInt64BitsToDouble(Int64)

Konvertiert die angegebene 64-Bit-Ganzzahl mit Vorzeichen in eine Gleitkommazahl mit doppelter Genauigkeit.

System_CAPS_pubmethodSystem_CAPS_staticToBoolean(Byte[], Int32)

Gibt einen booleschen Wert, der aus dem Byte an einer angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToChar(Byte[], Int32)

Gibt ein Unicode-Zeichen aus zwei Bytes an der angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToDouble(Byte[], Int32)

Gibt eine mit doppelter Genauigkeit Gleitkommazahl aus acht Bytes an der angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToInt16(Byte[], Int32)

Gibt eine 16-Bit-Ganzzahl mit Vorzeichen, die aus zwei Bytes an der angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToInt32(Byte[], Int32)

Gibt eine 32-Bit-Ganzzahl mit Vorzeichen, die aus vier Bytes an der angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToInt64(Byte[], Int32)

Gibt eine 64-Bit-Ganzzahl mit Vorzeichen, die aus acht Bytes an der angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToSingle(Byte[], Int32)

Gibt eine mit einfacher Genauigkeit Gleitkommazahl aus vier Bytes an der angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToString(Byte[])

Konvertiert den numerischen Wert der einzelnen Elemente eines angegebenen Arrays von Bytes in die entsprechende hexadezimale Zeichenfolge-Darstellung.

System_CAPS_pubmethodSystem_CAPS_staticToString(Byte[], Int32)

Konvertiert den numerischen Wert der einzelnen Elemente eines angegebenen Unterarrays von Bytes in die entsprechende hexadezimale Zeichenfolge-Darstellung.

System_CAPS_pubmethodSystem_CAPS_staticToString(Byte[], Int32, Int32)

Konvertiert den numerischen Wert der einzelnen Elemente eines angegebenen Unterarrays von Bytes in die entsprechende hexadezimale Zeichenfolge-Darstellung.

System_CAPS_pubmethodSystem_CAPS_staticToUInt16(Byte[], Int32)

Gibt eine 16-Bit-Ganzzahl ohne Vorzeichen, die aus zwei Bytes an der angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToUInt32(Byte[], Int32)

Gibt eine 32-Bit-Ganzzahl ohne Vorzeichen aus vier Bytes an der angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToUInt64(Byte[], Int32)

Gibt eine 64-Bit-Ganzzahl ohne Vorzeichen aus acht Bytes an der angegebenen Position in ein Bytearray konvertiert.

NameBeschreibung
System_CAPS_pubfieldSystem_CAPS_staticIsLittleEndian

Gibt die Bytereihenfolge (Endian-Reihenfolge") in der Daten in dieser Computerarchitektur gespeichert werden.

Die BitConverter -Klasse hilft, Werttypen in ihrer grundlegenden Form, als eine Reihe von Bytes zu bearbeiten. Ein Byte ist definiert als eine 8-Bit-Ganzzahl ohne Vorzeichen. Die BitConverter Klasse enthält statische Methoden für alle primitiven Typen in und aus einem Array von Bytes zu konvertieren, wie in der folgenden Tabelle veranschaulicht wird.

Type

Byte-Konvertierung

Byte-Konvertierung

Boolean

GetBytes(Boolean)

ToBoolean

Char

GetBytes(Char)

ToChar

Double

GetBytes(Double)

- oder -

DoubleToInt64Bits(Double)

ToDouble

- oder -

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

Bei Verwendung von BitConverter Methoden, um Round-Trip-Daten, stellen sicher, dass die GetBytes überladen und die ToTyp Methode geben den gleichen Typ. Wiederherstellen von ein Array, das durch Aufrufen eine Ganzzahl mit Vorzeichen darstellt, wie im folgenden Beispiel wird veranschaulicht, die ToUInt32 Methode kann dazu führen, ein Wert, der von der ursprünglichen unterscheidet. Weitere Informationen finden Sie im Eintrag Working with Signed Non-Decimal and Bitwise Values im BCL-Teamblog.

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

Die Reihenfolge von Bytes in das zurückgegebene Array die GetBytes überladene Methoden (sowie die Reihenfolge der Bits in der Ganzzahl die DoubleToInt64Bits -Methode und die Reihenfolge der Hexadezimalzeichenfolgen zurückgegebene die ToString(Byte[]) Methode) hängt davon ab, ob die Computerarchitektur little-Endian oder big-Endian ist. Auf ähnliche Weise die Reihenfolge der Bytes im Array und zurückgegeben, indem die ToIntegerValue Methoden und die ToChar Methode hängt davon ab, ob die Computerarchitektur little-Endian oder big-Endian ist. Die Endian-Reihenfolge einer Architektur wird angegeben, indem der IsLittleEndian ab true in little-Endian-Systemen und false auf big-Endian-Systemen. In little-Endian-Systemen vorangestellt niederwertigen Bytes höherwertigen Bytes. In big-Endian-Systemen vorangestellt höherwertigen Bytes niederwertigen Bytes. Die folgende Tabelle zeigt den Unterschied in den Bytearrays, die aus dem Übergeben der ganzen Zahl 1.234.567.890 (0x499602D2) die GetBytes(Int32) Methode. Die Bytes werden in der Reihenfolge vom Byte an Index 0 zum Byte an Index 3 aufgeführt.

Little-Endian-

D2-02-96-49

Big-Endian-

49-96-02-D2

Da der Rückgabewert einiger Methoden von Systemarchitektur abhängt, achten Sie bei der Übertragung von Daten über Computergrenzen Byte:

  • Wenn alle Systeme senden und Empfangen von Daten garantiert die gleiche Endian-Reihenfolge haben, hat nichts ausgeführt werden, auf die Daten werden.

  • Wenn Systeme senden und Empfangen von Daten neuen immer Daten in einer bestimmten Reihenfolge übertragen werden können. Dies bedeutet, dass die Reihenfolge der Bytes im Array möglicherweise entweder vor dem Senden oder nach dem empfangen umgekehrt werden. Eine allgemeine Konvention ist für die Datenübertragung im Netzwerk-Bytereihenfolge (big-Endian-Reihenfolge). Das folgende Beispiel stellt eine Implementierung für einen ganzzahligen Wert in Netzwerk-Byte-Reihenfolge senden.

    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
    
  • Wenn Systeme senden und Empfangen von Daten können neuen haben und die zu übertragenden Daten besteht aus Ganzzahlen mit Vorzeichen, die IPAddress.HostToNetworkOrder Methode, um die Daten in Netzwerk-Bytereihenfolge konvertieren und die IPAddress.NetworkToHostOrder Methode in der Reihenfolge, die der Empfänger zu konvertieren.

Das folgende Codebeispiel veranschaulicht die Verwendung von mehreren BitConverter -Klassenmethoden.

// 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
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Öffentliche statische (in Visual Basic freigegebene) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Zurück zum Anfang
Anzeigen: