为什么Convert.ToInt32(byte)在代码中有效?

时间:2015-09-13 09:28:13

标签: c# c#-2.0 int32

我一直试图弄清楚mscorlib Convert.ToInt32(byte)是如何工作的,因为我只能访问项目的.Net 2.0。到目前为止,尝试使用.Net反射器来打开该DLL已经导致无法帮助查看.Net 4.5中的.Net如何处理它(同样,我无法访问此项目)。 / p>

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

我注意到下面的代码存在巨大差异。它只是为int32设置的下限和上限,如果在外面则返回0?

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

Convert.ToInt32 vs BitConverter.ToInt32

3 个答案:

答案 0 :(得分:2)

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

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

Convert.ToInt32占用1个字节并将其“扩展”为Int32类型。

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

会计算以下内容:

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

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

(Int32)buffer[0]

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

以下是示例BitConvertor

的MSDN文档

Convert.ToInt32