C# 为什么Convert.ToInt32(字节)在代码中工作?

C# 为什么Convert.ToInt32(字节)在代码中工作?,c#,c#-2.0,int32,C#,C# 2.0,Int32,我一直在试图弄清楚mscorlibConvert.ToInt32(byte)是如何工作的,因为我只能为一个项目访问.NET2.0。尝试使用.Net反射器打开该dll,到目前为止,在尝试查看.Net在.Net 4.5中如何处理它时,没有任何帮助(同样,我没有访问该项目的权限) 有人能解释一下Convert.ToInt32(byte)是如何从一个字节转换并创建一个32位有符号整数的,以及在代码中我是如何做到这一点的吗 我注意到下面的代码有很大的不同。它是否只是为int32设置的上下限,如果在外部,则

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

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

我注意到下面的代码有很大的不同。它是否只是为int32设置的上下限,如果在外部,则返回0

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

来自MSDN文档

BitConverter.ToInt32从数组中给定的位置开始获取4个字节,并将其转换为带符号整数

Convert.ToInt32接受1字节并将其“扩展”为Int32类型

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

将计算以下各项:

buffer[3] * 16777216 + buffer[2] * 65536 + buffer[1] * 256 + buffer[0]
(Int32)buffer[0]
另一方面,Convert.ToInt32(缓冲区[0])将计算以下内容:

buffer[3] * 16777216 + buffer[2] * 65536 + buffer[1] * 256 + buffer[0]
(Int32)buffer[0]
BitConverter.ToInt32(byte[]buffer,int index)
始终需要4个字节,
Convert.ToInt32(byte b)
只需要1个字节。

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

以下是两者的MSDN文档和示例


'Convert.ToInt32需要1个字节,并将其“扩展”为Int32类型。'是的,但如何在代码中进行?将字节转换为int是一个简单的强制转换。很抱歉,深夜,我应该知道。“泰伊,我跳下去了。”“欧绪弗洛,你可以看看;-)是的,但我24小时没睡觉,觉得有什么地方不对劲,它返回相同的值。我甚至在我的问题中说了那么多,哈哈。