BitConverter.ToInt32 Metoda

Definice

Přetížení

ToInt32(ReadOnlySpan<Byte>)

Převede bajtový rozsah jen pro čtení na celé číslo se 32bitovým signedm. .

ToInt32(Byte[], Int32)

Vrátí 32bitové celé číslo se signýmým kódem převedené ze čtyř bajtů na zadané pozici v bajtovém poli.

ToInt32(ReadOnlySpan<Byte>)

Převede bajtový rozsah jen pro čtení na celé číslo se 32bitovým signedm. .

public:
 static int ToInt32(ReadOnlySpan<System::Byte> value);
public static int ToInt32 (ReadOnlySpan<byte> value);
static member ToInt32 : ReadOnlySpan<byte> -> int
Public Shared Function ToInt32 (value As ReadOnlySpan(Of Byte)) As Integer

Parametry

value
ReadOnlySpan<Byte>

Rozsah jen pro čtení obsahující bajty, které se mají převést.

Návraty

Int32

32bitové celé číslo se signoumi sadou představující převedené bajty.

Výjimky

Délka value je menší než 4.

Platí pro

ToInt32(Byte[], Int32)

Vrátí 32bitové celé číslo se signýmým kódem převedené ze čtyř bajtů na zadané pozici v bajtovém poli.

public:
 static int ToInt32(cli::array <System::Byte> ^ value, int startIndex);
public static int ToInt32 (byte[] value, int startIndex);
static member ToInt32 : byte[] * int -> int
Public Shared Function ToInt32 (value As Byte(), startIndex As Integer) As Integer

Parametry

value
Byte[]

Pole bajtů, které zahrnuje čtyři bajty, které chcete převést.

startIndex
Int32

Počáteční pozice v rámci value.

Návraty

Int32

32bitové celé číslo se signoum sadou tvořené čtyřmi bajty začínající na startIndex.

Výjimky

startIndex je větší než nebo rovna délce value minus 3 a je menší nebo roven délce value minus 1.

value je null.

startIndex je menší než nula nebo větší než délka value minus 1.

Příklady

Následující příklad používá metodu ToInt32 k vytvoření Int32 hodnot ze čtyřbajtů pole a z horních čtyř bajtů osmibajtů pole. Používá také GetBytes(Int32) metody a ToInt32 k zaokrouhlení Int32 hodnoty.

using System;

public class Example
{
   public static void Main()
   {
      // Create an Integer from a 4-byte array.
      Byte[] bytes1 = { 0xEC, 0x00, 0x00, 0x00 };
      Console.WriteLine("{0}--> 0x{1:X4} ({1:N0})", FormatBytes(bytes1),
                                      BitConverter.ToInt32(bytes1, 0));
      // Create an Integer from the upper four bytes of a byte array.
      Byte[] bytes2 = BitConverter.GetBytes(Int64.MaxValue / 2);
      Console.WriteLine("{0}--> 0x{1:X4} ({1:N0})", FormatBytes(bytes2),
                                      BitConverter.ToInt32(bytes2, 4));

      // Round-trip an integer value.
      int original = (int) Math.Pow(16, 3);
      Byte[] bytes3 = BitConverter.GetBytes(original);
      int restored = BitConverter.ToInt32(bytes3, 0);
      Console.WriteLine("0x{0:X4} ({0:N0}) --> {1} --> 0x{2:X4} ({2:N0})", original,
                        FormatBytes(bytes3), restored);
   }

   private static string FormatBytes(Byte[] bytes)
   {
       string value = "";
       foreach (var byt in bytes)
          value += string.Format("{0:X2} ", byt);

       return value;
   }
}
// The example displays the following output:
//       EC 00 00 00 --> 0x00EC (236)
//       FF FF FF FF FF FF FF 3F --> 0x3FFFFFFF (1,073,741,823)
//       0x1000 (4,096) --> 00 10 00 00  --> 0x1000 (4,096)
open System

let formatBytes (bytes: byte []) =
    bytes
    |> Array.map (fun x -> $"{x:X2}")
    |> String.concat ""

// Create an Integer from a 4-byte array.
let bytes1 = [| 0xECuy; 0x00uy; 0x00uy; 0x00uy |]
let int1  = BitConverter.ToInt32(bytes1, 0)
printfn $"{formatBytes bytes1}--> 0x{int1:X4} ({int1:N0})"

// Create an Integer from the upper four bytes of a byte array.
let bytes2 = BitConverter.GetBytes(Int64.MaxValue / 2L)
let int2 = BitConverter.ToInt32(bytes2, 4)
printfn $"{formatBytes bytes2}--> 0x{int2:X4} ({int2:N0})"

// Round-trip an integer value.
let original = pown 16 3
let bytes3 = BitConverter.GetBytes original
let restored = BitConverter.ToInt32(bytes3, 0)
printfn $"0x{original:X4} ({original:N0}) --> {formatBytes bytes3} --> 0x{restored:X4} ({restored:N0})"


// The example displays the following output:
//       EC 00 00 00 --> 0x00EC (236)
//       FF FF FF FF FF FF FF 3F --> 0x3FFFFFFF (1,073,741,823)
//       0x1000 (4,096) --> 00 10 00 00  --> 0x1000 (4,096)
Module Example
   Public Sub Main()
      ' Create an Integer from a 4-byte array.
      Dim bytes1() As Byte = { &hEC, &h00, &h00, &h00 }
      Console.WriteLine("{0}--> 0x{1:X4} ({1:N0})", FormatBytes(bytes1),
                                      BitConverter.ToInt32(bytes1, 0))
      ' Create an Integer from the upper four bytes of a byte array.
      Dim bytes2() As Byte = BitConverter.GetBytes(Int64.MaxValue \ 2)
      Console.WriteLine("{0}--> 0x{1:X4} ({1:N0})", FormatBytes(bytes2),
                                      BitConverter.ToInt32(bytes2, 4))
      
      ' Round-trip an integer value.
      Dim original As Integer = CInt(16^3)
      Dim bytes3() As Byte = BitConverter.GetBytes(original)
      Dim restored As Integer = BitConverter.ToInt32(bytes3, 0)
      Console.WriteLine("0x{0:X4} ({0:N0}) --> {1} --> 0x{2:X4} ({2:N0})", original, 
                        FormatBytes(bytes3), restored)
   End Sub
   
   Private Function FormatBytes(bytes() As Byte) As String
       Dim value As String = ""
       For Each byt In bytes
          value += String.Format("{0:X2} ", byt)
       Next
       Return value
   End Function
End Module
' The example displays the following output:
'       EC 00 00 00 --> 0x00EC (236)
'       FF FF FF FF FF FF FF 3F --> 0x3FFFFFFF (1,073,741,823)
'       0x1000 (4,096) --> 00 10 00 00  --> 0x1000 (4,096)

Poznámky

Metoda ToInt32 převede bajty z indexu startIndex na startIndex + 3 na Int32 hodnotu. Pořadí bajtů v poli musí odrážet endianitu architektury počítačového systému. Další informace najdete v části Poznámky v tématu BitConverter.

Viz také

Platí pro