为什么 Convert.ToInt32(byte) 在代码中工作?

Why does Convert.ToInt32(byte) work in code?

我一直在努力弄清楚 mscorlib Convert.ToInt32(byte) 是如何工作的,因为我只能为一个项目访问 .Net 2.0。尝试使用 .Net 反射器打开该 dll 到目前为止,在尝试查看 .Net 如何在 .Net 4.5 中处理它时没有任何帮助(同样,我无权访问该项目)。

有人可以解释一下 Convert.ToInt32(byte) 如何从一个字节转换和创建一个 32 位有符号整数,以及我如何在代码中做到这一点?

我注意到下面的代码有很大的不同。它只是为 int32 和 returns 0 设置的下限和上限吗?

Console.WriteLine(
     Convert.ToInt32(buffer[i]).ToString() + 
                                         " " + 
     BitConverter.ToInt32(buffer, i).ToString()
 );

来自 MSDN 文档https://msdn.microsoft.com/en-us/library/system.bitconverter.toint32(v=vs.80).aspx

BitConverter.ToInt32 从您给它的数组中的位置开始占用 4 个字节,并将其转换为有符号整数。

Convert.ToInt32 占用 1 个字节,"expands" 将其转换为 Int32 类型。

给定一个长度为4的字节数组,称为buffer,然后BitConverter.ToInt32(buffer, 0)

将计算以下内容:

buffer[3] * 16777216 + buffer[2] * 65536 + buffer[1] * 256 + buffer[0]
另一方面,

Convert.ToInt32(buffer[0]) 将计算以下内容:

(Int32)buffer[0]

BitConverter.ToInt32(byte[] buffer, int index) 总是占用 4 个字节,Convert.ToInt32(byte b) 只占用 1 个字节。

Convert.ToInt32() 将指定值转换为 32 位有符号整数。 while BitConvertor.ToInt32() returns 从字节数组中指定位置的四个字节转换而来的 32 位有符号整数。

这是两个示例的 MSDN 文档BitConvertor

Convert.ToInt32