我一直试图弄清楚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()
);
答案 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文档