多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 如何:将字节数组转换为 int(C# 编程指南) 此示例演示如何使用 [BitConverter](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.aspx) 类将字节数组转换为 [int](https://msdn.microsoft.com/zh-cn/library/5kzh1b5w.aspx) 并返回字节数组。例如,在从网络读取字节之后,可能需要将字节转换为内置数据类型。除了示例中的 [ToInt32(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.toint32.aspx) 方法之外,下表列出了 [BitConverter](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.aspx) 类中将字节(来自字节数组)转换为其他内置类型的方法。 | 返回类型 | 方法 | | --- | --- | | **bool** | [ToBoolean(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.toboolean.aspx) | | **char** | [ToChar(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.tochar.aspx) | | **double** | [ToDouble(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.todouble.aspx) | | **short** | [ToInt16(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.toint16.aspx) | | **int** | [ToInt32(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.toint32.aspx) | | **long** | [ToInt64(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.toint64.aspx) | | **float** | [ToSingle(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.tosingle.aspx) | | **ushort** | [ToUInt16(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.touint16.aspx) | | **uint** | [ToUInt32(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.touint32.aspx) | | **ulong** | [ToUInt64(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.touint64.aspx) | 此示例实例化字节数组,并在计算机结构为 little-endian 的情况下反转数组(即首先存储最低有效字节),然后调用 [ToInt32(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.toint32.aspx) 方法以将数组中的四个字节转换为 **int**。 [ToInt32(Byte[], Int32)](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.toint32.aspx) 的第二个参数指定字节数组的起始索引。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 输出可能会根据计算机结构的 endian 设置而不同。 | ``` byte[] bytes = { 0, 0, 0, 25 }; // If the system architecture is little-endian (that is, little end first), // reverse the byte array. if (BitConverter.IsLittleEndian) Array.Reverse(bytes); int i = BitConverter.ToInt32(bytes, 0); Console.WriteLine("int: {0}", i); // Output: int: 25 ``` 在此示例中,调用 [BitConverter](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.aspx) 类的 [GetBytes(Int32)](https://msdn.microsoft.com/zh-cn/library/de8fssa4.aspx) 方法以将 **int** 转换为字节数组。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 输出可能会根据计算机结构的 endian 设置而不同。 | ``` byte[] bytes = BitConverter.GetBytes(201805978); Console.WriteLine("byte array: " + BitConverter.ToString(bytes)); // Output: byte array: 9A-50-07-0C ``` ## 请参阅 [BitConverter](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.aspx) [IsLittleEndian](https://msdn.microsoft.com/zh-cn/library/system.bitconverter.islittleendian.aspx) [类型(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/ms173104.aspx)