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

 

Veröffentlicht: Oktober 2016

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-Zeichen als ein Array von Bytes zurück.

System_CAPS_pubmethodSystem_CAPS_staticGetBytes(Double)

Gibt den angegebenen Gleitkommawert mit doppelter Genauigkeit als ein Array von Bytes 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 ein Array von Bytes 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 eine Unicode-Zeichen aus zwei Bytes an einer angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToDouble(Byte[], Int32)

Gibt eine mit doppelter Genauigkeit Gleitkommazahl konvertiert aus acht Bytes an einer angegebenen Position in einem Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticToInt16(Byte[], Int32)

Gibt eine 16-Bit-Ganzzahl mit Vorzeichen, die aus zwei Bytes an einer 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 einer 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 einer angegebenen Position in ein Bytearray konvertiert.

System_CAPS_pubmethodSystem_CAPS_staticToSingle(Byte[], Int32)

Gibt eine mit einfacher Genauigkeit Gleitkommazahl konvertiert aus vier Bytes an einer angegebenen Position in einem Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticToString(Byte[])

Den numerischen Wert jedes Element eines angegebenen Arrays von Bytes konvertiert in die entsprechende hexadezimale Zeichenfolgendarstellung.

System_CAPS_pubmethodSystem_CAPS_staticToString(Byte[], Int32)

Den numerischen Wert, der jedes Element eines angegebenen Unterarrays von Bytes konvertiert in die entsprechende hexadezimale Zeichenfolgendarstellung.

System_CAPS_pubmethodSystem_CAPS_staticToString(Byte[], Int32, Int32)

Den numerischen Wert, der jedes Element eines angegebenen Unterarrays von Bytes konvertiert in die entsprechende hexadezimale Zeichenfolgendarstellung.

System_CAPS_pubmethodSystem_CAPS_staticToUInt16(Byte[], Int32)

Gibt eine 16-Bit-Ganzzahl ohne Vorzeichen konvertiert, die aus zwei Bytes an einer angegebenen Position in einem Bytearray zurück.

System_CAPS_pubmethodSystem_CAPS_staticToUInt32(Byte[], Int32)

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

System_CAPS_pubmethodSystem_CAPS_staticToUInt64(Byte[], Int32)

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

NameBeschreibung
System_CAPS_pubfieldSystem_CAPS_staticIsLittleEndian

Gibt die Bytereihenfolge (Endianwert) an, 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 konvertieren in andere und aus einem Array von Bytes, wie in der folgenden Tabelle veranschaulicht wird.

Type

Byte-Konvertierung

Von der 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 Sie den gleichen Typ. Wiederherstellen von ein Array, das durch den Aufruf eine Ganzzahl mit Vorzeichen darstellt, wie im folgenden Beispiel wird veranschaulicht, die ToUInt32 Methode kann dazu führen, ein Wert, der aus dem 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 der Bytes in das zurückgegebene Array der GetBytes methodenüberladungen (sowie die Reihenfolge der Bits in der ganzen Zahl zurückgegebenes der DoubleToInt64Bits -Methode und die Reihenfolge der Hexadezimalzeichenfolgen zurückgegebenes der ToString(Byte[]) Methode) hängen 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. Das Endianness einer Architektur wird angegeben, indem die IsLittleEndian Eigenschaft, die zurückgibt true in little-Endian-Systemen und false auf big-Endian-Systemen. In little-Endian-Systemen vorausgehen niederwertigen Bytes höherwertigen Bytes. Für big-Endian-System vorausgehen höherwertigen Bytes niederwertigen Bytes. In der folgenden Tabelle veranschaulicht den Unterschied in den Bytearrays, die aus die ganzen Zahl 1.234.567.890 (0x499602D2) übergeben, um die GetBytes(Int32) Methode. Die Bytes werden in der Reihenfolge von Byte an Index 0 auf das Byte am Index 3 aufgeführt.

Little-endian

D2-02-96-49

Big-endian

49-96-02-D2

Da der Rückgabewert einiger Methoden auf die Systemarchitektur abhängt, seien Sie vorsichtig beim Bytedaten über Computergrenzen übertragen:

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

  • Wenn Systeme senden und Empfangen von Daten auf verschiedenen Endianness verfügen können, sollten Sie die übertragen Sie Daten in einer bestimmten Reihenfolge immer. Dies bedeutet, dass die Reihenfolge der Bytes im Array vor dem Senden oder nach dem Empfang rückgängig gemacht werden kann. Eine allgemeine Konvention besteht darin, Daten in der netzwerkbyte-Reihenfolge (big-Endian-Reihenfolge) übertragen. Im folgende Beispiel stellt eine Implementierung für einen ganzzahligen Wert in der netzwerkbyte-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 verschiedene Endianness haben und die Daten zu übertragende besteht aus Ganzzahlen mit Vorzeichen, rufen Sie die IPAddress.HostToNetworkOrder Methode, um die Daten in der netzwerkbyte-Reihenfolge konvertieren und die IPAddress.NetworkToHostOrder Methode in der Reihenfolge, die erforderlich sind, durch den Empfänger zu konvertieren.

Das folgende Codebeispiel veranschaulicht die Verwendung mehrerer 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
*/

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: