Baca dalam bahasa Inggris

Bagikan melalui


BitConverter Kelas

Definisi

Mengonversi jenis data dasar menjadi array byte, dan array byte ke jenis data dasar.

public static class BitConverter
public sealed class BitConverter
Warisan
BitConverter

Contoh

Contoh kode berikut mengilustrasikan penggunaan beberapa metode kelas 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
*/

Keterangan

Kelas BitConverter membantu memanipulasi jenis nilai dalam bentuk dasarnya, sebagai serangkaian byte. Byte didefinisikan sebagai bilangan bulat yang tidak ditandatangani 8-bit. Kelas BitConverter mencakup metode statis untuk mengonversi masing-masing jenis primitif ke dan dari array byte, seperti yang diilustrasikan tabel berikut.

Jika Anda menggunakan metode untuk melakukan perjalanan pulang pergi, pastikan bahwa kelebihan beban dan metode Jenis menentukan jenis yang sama. Seperti yang diilustrasikan contoh berikut, memulihkan array yang mewakili bilangan bulat yang ditandatangani dengan memanggil metode ToUInt32 dapat menghasilkan nilai yang berbeda dari aslinya. Untuk informasi selengkapnya, lihat Bekerja dengan Nilai Non-Desimal dan Bitwise yang Ditandatangani.

using System;

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

      // Convert bytes back to int.
      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

Urutan byte dalam array yang dikembalikan oleh metode GetBytes kelebihan beban (serta urutan bit dalam bilangan bulat yang dikembalikan oleh metode DoubleToInt64Bits) tergantung pada apakah arsitektur komputer adalah little-endian atau big-endian. Demikian pula, urutan byte dalam array dan dikembalikan oleh metode IntegerValue dan metode tergantung pada apakah arsitektur komputer adalah little-endian atau big-endian. Endianness arsitektur ditunjukkan oleh properti IsLittleEndian, yang mengembalikan true pada sistem little-endian dan false pada sistem big-endian. Pada sistem little-endian, byte urutan lebih rendah mendahului byte urutan yang lebih tinggi. Pada sistem big-endian, byte urutan yang lebih tinggi mendahului byte urutan yang lebih rendah. Tabel berikut mengilustrasikan perbedaan array byte yang dihasilkan dari meneruskan bilangan bulat 1.234.567.890 (0x499602D2) ke metode GetBytes(Int32). Byte tercantum dalam urutan dari byte pada indeks 0 ke byte pada indeks 3.

Little-endian D2-02-96-49
Big-endian 49-96-02-D2

Karena nilai pengembalian beberapa metode tergantung pada arsitektur sistem, berhati-hatilah saat mengirimkan data byte di luar batas komputer:

  • Jika semua sistem yang mengirim dan menerima data dijamin memiliki endianness yang sama, tidak ada yang harus dilakukan pada data.

  • Jika sistem yang mengirim dan menerima data dapat memiliki endianness yang berbeda, selalu kirimkan data dalam urutan tertentu. Ini berarti bahwa urutan byte dalam array mungkin harus dibalik baik sebelum mengirimnya atau setelah menerimanya. Konvensi umumnya adalah mengirimkan data dalam urutan byte jaringan (urutan big-endian). Contoh berikut menyediakan implementasi untuk mengirim nilai bilangan bulat dalam urutan byte jaringan.

    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
    
  • Jika sistem yang mengirim dan menerima data dapat memiliki endianness yang berbeda dan data yang akan dikirimkan terdiri dari bilangan bulat yang ditandatangani, panggil metode IPAddress.HostToNetworkOrder untuk mengonversi data ke urutan byte jaringan dan metode IPAddress.NetworkToHostOrder untuk mengonversinya ke pesanan yang diperlukan oleh penerima.

Bidang

IsLittleEndian

Menunjukkan urutan byte ("endianness") tempat data disimpan dalam arsitektur komputer ini.

Metode

DoubleToInt64Bits(Double)

Mengonversi angka titik float presisi ganda yang ditentukan menjadi bilangan bulat bertanda tangan 64-bit.

DoubleToUInt64Bits(Double)

Mengonversi angka titik float presisi ganda yang ditentukan menjadi bilangan bulat yang tidak ditandatangani 64-bit.

GetBytes(Boolean)

Mengembalikan nilai Boolean yang ditentukan sebagai array byte.

GetBytes(Char)

Mengembalikan nilai karakter Unicode yang ditentukan sebagai array byte.

GetBytes(Double)

Mengembalikan nilai floating-point presisi ganda yang ditentukan sebagai array byte.

GetBytes(Half)

Mengembalikan nilai floating-point setengah presisi yang ditentukan sebagai array byte.

GetBytes(Int128)

Mengembalikan nilai bilangan bulat bertanda tangan 128-bit yang ditentukan sebagai array byte.

GetBytes(Int16)

Mengembalikan nilai bilangan bulat bertanda tangan 16-bit yang ditentukan sebagai array byte.

GetBytes(Int32)

Mengembalikan nilai bilangan bulat bertanda tangan 32-bit yang ditentukan sebagai array byte.

GetBytes(Int64)

Mengembalikan nilai bilangan bulat bertanda tangan 64-bit yang ditentukan sebagai array byte.

GetBytes(Single)

Mengembalikan nilai titik mengambang presisi tunggal yang ditentukan sebagai array byte.

GetBytes(UInt128)

Mengembalikan nilai bilangan bulat yang tidak ditandatangani 128-bit yang ditentukan sebagai array byte.

GetBytes(UInt16)

Mengembalikan nilai bilangan bulat yang tidak ditandatangani 16-bit yang ditentukan sebagai array byte.

GetBytes(UInt32)

Mengembalikan nilai bilangan bulat yang tidak ditandatangani 32-bit yang ditentukan sebagai array byte.

GetBytes(UInt64)

Mengembalikan nilai bilangan bulat yang tidak ditandatangani 64-bit yang ditentukan sebagai array byte.

HalfToInt16Bits(Half)

Mengonversi nilai floating-point setengah presisi menjadi bilangan bulat 16-bit.

HalfToUInt16Bits(Half)

Mengonversi angka titik float setengah presisi yang ditentukan menjadi bilangan bulat yang tidak ditandatangani 16-bit.

Int16BitsToHalf(Int16)

Menginterpretasikan ulang nilai bilangan bulat bertanda 16-bit yang ditentukan sebagai nilai floating-point setengah presisi.

Int32BitsToSingle(Int32)

Menginterpretasikan ulang bilangan bulat 32-bit yang ditentukan sebagai nilai floating-point presisi tunggal.

Int64BitsToDouble(Int64)

Menginterpretasikan ulang bilangan bulat bertanda 64-bit yang ditentukan ke angka titik mengambang presisi ganda.

SingleToInt32Bits(Single)

Mengonversi nilai floating-point presisi tunggal menjadi bilangan bulat.

SingleToUInt32Bits(Single)

Mengonversi angka titik mengambang presisi tunggal yang ditentukan menjadi bilangan bulat yang tidak ditandatangani 32-bit.

ToBoolean(Byte[], Int32)

Mengembalikan nilai Boolean yang dikonversi dari byte pada posisi tertentu dalam array byte.

ToBoolean(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi nilai Boolean.

ToChar(Byte[], Int32)

Mengembalikan karakter Unicode yang dikonversi dari dua byte pada posisi tertentu dalam array byte.

ToChar(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi karakter.

ToDouble(Byte[], Int32)

Mengembalikan angka titik float presisi ganda yang dikonversi dari delapan byte pada posisi tertentu dalam array byte.

ToDouble(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi nilai floating-point presisi ganda.

ToHalf(Byte[], Int32)

Mengembalikan angka titik float setengah presisi yang dikonversi dari dua byte pada posisi tertentu dalam array byte.

ToHalf(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi nilai floating-point setengah presisi.

ToInt128(Byte[], Int32)

Mengembalikan bilangan bulat bertanda tangan 128-bit yang dikonversi dari enam belas byte pada posisi tertentu dalam array byte.

ToInt128(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi bilangan bulat bertanda tangan 128-bit.

ToInt16(Byte[], Int32)

Mengembalikan bilangan bulat bertanda tangan 16-bit yang dikonversi dari dua byte pada posisi tertentu dalam array byte.

ToInt16(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi bilangan bulat bertanda 16-bit.

ToInt32(Byte[], Int32)

Mengembalikan bilangan bulat bertanda tangan 32-bit yang dikonversi dari empat byte pada posisi tertentu dalam array byte.

ToInt32(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi bilangan bulat bertanda tangan 32-bit.

ToInt64(Byte[], Int32)

Mengembalikan bilangan bulat bertanda tangan 64-bit yang dikonversi dari delapan byte pada posisi tertentu dalam array byte.

ToInt64(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi bilangan bulat bertanda tangan 64-bit.

ToSingle(Byte[], Int32)

Mengembalikan angka titik float presisi tunggal yang dikonversi dari empat byte pada posisi tertentu dalam array byte.

ToSingle(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi nilai floating-point presisi tunggal.

ToString(Byte[])

Mengonversi nilai numerik dari setiap elemen array byte tertentu ke representasi string heksadesimal yang setara.

ToString(Byte[], Int32)

Mengonversi nilai numerik dari setiap elemen subarray byte tertentu ke representasi string heksadesimal yang setara.

ToString(Byte[], Int32, Int32)

Mengonversi nilai numerik dari setiap elemen subarray byte tertentu ke representasi string heksadesimal yang setara.

ToUInt128(Byte[], Int32)

Mengembalikan bilangan bulat yang tidak ditandatangani 128-bit yang dikonversi dari empat byte pada posisi tertentu dalam array byte.

ToUInt128(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi bilangan bulat yang tidak ditandatangani 128-bit.

ToUInt16(Byte[], Int32)

Mengembalikan bilangan bulat tidak bertanda 16-bit yang dikonversi dari dua byte pada posisi tertentu dalam array byte.

ToUInt16(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi bilangan bulat yang tidak ditandatangani 16-bit.

ToUInt32(Byte[], Int32)

Mengembalikan bilangan bulat yang tidak ditandatangani 32-bit yang dikonversi dari empat byte pada posisi tertentu dalam array byte.

ToUInt32(ReadOnlySpan<Byte>)

Mengonversi rentang byte baca-saja menjadi bilangan bulat yang tidak ditandatangani 32-bit.

ToUInt64(Byte[], Int32)

Mengembalikan bilangan bulat tidak bertanda 64-bit yang dikonversi dari delapan byte pada posisi tertentu dalam array byte.

ToUInt64(ReadOnlySpan<Byte>)

Mengonversi byte menjadi panjang yang tidak ditandatangani.

TryWriteBytes(Span<Byte>, Boolean)

Mengonversi Boolean menjadi rentang byte.

TryWriteBytes(Span<Byte>, Char)

Mengonversi karakter menjadi rentang byte.

TryWriteBytes(Span<Byte>, Double)

Mengonversi nilai floating-point presisi ganda menjadi rentang byte.

TryWriteBytes(Span<Byte>, Half)

Mengonversi nilai floating-point setengah presisi menjadi rentang byte.

TryWriteBytes(Span<Byte>, Int128)

Mengonversi bilangan bulat bertanda 128-bit menjadi rentang byte.

TryWriteBytes(Span<Byte>, Int16)

Mengonversi bilangan bulat bertanda 16-bit menjadi rentang byte.

TryWriteBytes(Span<Byte>, Int32)

Mengonversi bilangan bulat bertanda tangan 32-bit menjadi rentang byte.

TryWriteBytes(Span<Byte>, Int64)

Mengonversi bilangan bulat bertanda 64-bit menjadi rentang byte.

TryWriteBytes(Span<Byte>, Single)

Mengonversi nilai floating-point presisi tunggal menjadi rentang byte.

TryWriteBytes(Span<Byte>, UInt128)

Mengonversi bilangan bulat yang tidak ditandatangani 128-bit menjadi rentang byte.

TryWriteBytes(Span<Byte>, UInt16)

Mengonversi bilangan bulat 16-bit yang tidak ditandatangani menjadi rentang byte.

TryWriteBytes(Span<Byte>, UInt32)

Mengonversi bilangan bulat yang tidak ditandatangani 32-bit menjadi rentang byte.

TryWriteBytes(Span<Byte>, UInt64)

Mengonversi bilangan bulat 64-bit yang tidak ditandatangani menjadi rentang byte.

UInt16BitsToHalf(UInt16)

Mengonversi bilangan bulat yang tidak ditandatangani 16-bit yang ditentukan menjadi angka titik mengambang setengah presisi.

UInt32BitsToSingle(UInt32)

Mengonversi bilangan bulat yang tidak ditandatangani 32-bit yang ditentukan menjadi angka titik mengambang presisi tunggal.

UInt64BitsToDouble(UInt64)

Mengonversi bilangan bulat yang tidak ditandatangani 64-bit yang ditentukan menjadi angka titik mengambang presisi ganda.

Berlaku untuk

Lihat juga