BitConverter.ToInt32 方法

定义

重载

ToInt32(Byte[], Int32)

返回由字节数组中指定位置的四个字节转换来的 32 位有符号整数。Returns a 32-bit signed integer converted from four bytes at a specified position in a byte array.

ToInt32(ReadOnlySpan<Byte>)

将只读字节范围转换为 32 位带符号整数。Converts a read-only byte span into a 32-bit signed integer.

ToInt32(Byte[], Int32)

返回由字节数组中指定位置的四个字节转换来的 32 位有符号整数。Returns a 32-bit signed integer converted from four bytes at a specified position in a byte array.

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

参数

value
Byte[]

字节数组。An array of bytes.

startIndex
Int32

value 内的起始位置。The starting position within value.

返回

Int32

由四个字节构成、从 startIndex 开始的 32 位有符号整数。A 32-bit signed integer formed by four bytes beginning at startIndex.

例外

startIndex 大于等于 value 减 3 的长度,且小于等于 value 减 1 的长度。startIndex is greater than or equal to the length of value minus 3, and is less than or equal to the length of value minus 1.

valuenullvalue is null.

startIndex 小于零或大于 value 减 1 的长度。startIndex is less than zero or greater than the length of value minus 1.

示例

下面的示例使用 ToInt32 方法从 Int32 一个四字节数组和一个八字节数组的前四个字节中创建值。The following example uses the ToInt32 method to create Int32 values from a four-byte array and from the upper four bytes of an eight-byte array. 它还使用 GetBytes(Int32)ToInt32 方法来往返某个 Int32 值。It also uses the GetBytes(Int32) and ToInt32 methods to round-trip an Int32 value.

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)
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)

注解

ToInt32方法将索引从索引转换 startIndexstartIndex + 3,转换为 Int32 值。The ToInt32 method converts the bytes from index startIndex to startIndex + 3 to an Int32 value. 数组中的字节顺序必须反映计算机系统体系结构的字节排序。有关详细信息,请参阅的 "备注" 部分 BitConverterThe order of bytes in the array must reflect the endianness of the computer system's architecture; for more information, see the Remarks section of BitConverter.

另请参阅

适用于

ToInt32(ReadOnlySpan<Byte>)

将只读字节范围转换为 32 位带符号整数。Converts a read-only byte span into a 32-bit signed integer.

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

参数

value
ReadOnlySpan<Byte>

包含要转换的字节的只读范围。A read-only span containing the bytes to convert.

返回

Int32

表示已转换字节的 32 位带符号整数。A 32-bit signed integer representing the converted bytes.

例外

value 的长度小于 4。The length of value is less than 4.

适用于