2015-09-13 40 views
-1

我一直想弄清楚mscorlib Convert.ToInt32(byte)是如何工作的,因爲我只能訪問一個項目的.Net 2.0。嘗試使用.Net反射器打開該dll,目前無法幫助我們瞭解.Net如何在.Net 4.5中處理它(這也是我無法訪問的項目)。爲什麼Convert.ToInt32(byte)在代碼中工作?

有人可以解釋如何Convert.ToInt32(字節)工作轉換並創建一個字節的32位有符號的int,以及如何在代碼中我可以做到這一點?

我注意到下面的代碼有很大的區別。它只是爲int32設置的下限和上限,如果在外部則返回0?

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

Convert.ToInt32 vs BitConverter.ToInt32

回答

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(緩衝液[0])上另一方面將計算如下:

(Int32)buffer[0] 
+0

'Convert.ToInt32需要1個字節, 「擴展」,它給的Int32類型'。 是的,但如何在代碼? – Euthyphro

+0

將一個字節轉換爲int是一個簡單的轉換。 – DanL

+0

對不起深夜,我應該知道。把自己扔掉,ty。 – Euthyphro

1

BitConverter.ToInt32(byte[] buffer, int index)總是需要4個字節,Convert.ToInt32(byte b)只需1

0

Convert.ToInt32()將指定值轉換爲32位有符號整數。 而BitConvertor.ToInt32()返回從字節數組中指定位置的四個字節轉換的32位有符號整數。

這裏是既與例如MSDN文檔BitConvertor

Convert.ToInt32