1. 使用 BitConverter.ToInt32(最常用)
2. 手动转换(指定字节序)
小端序转换(低位在前)
byte[] bytes = { 0x12, 0x34, 0x56, 0x78 };
int result = (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3];
// 结果: 0x12345678 = 305419896
3. 处理跨平台字节序(推荐)
4. 使用 MemoryMarshal(高性能,.NET Core 2.1+)
5. 处理小于4字节的数组
完整示例对比
byte[] bytes = { 0x12, 0x34, 0x56, 0x78 };
// 小端序解释(Windows默认)
int littleEndian = BitConverter.ToInt32(bytes, 0);
Console.WriteLine($"小端序: {littleEndian:X}"); // 输出: 78563412
// 大端序解释
int bigEndian = (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3];
Console.WriteLine($"大端序: {bigEndian:X}"); // 输出: 12345678
注意事项
-
数组长度:确保
byte[]至少有4个字节(从起始索引开始) -
字节序:网络协议通常使用大端序,Windows系统使用小端序
-
性能:手动转换比
BitConverter稍快,但代码可读性较差 -
异常处理:使用
BitConverter时如果数组长度不足会抛出异常
后记:每天去学一点,学一点呀学一点,永远学不完。
浙公网安备 33010602011771号