2012-07-20 104 views
2

我正在使用BitConverter.ToInt32將一個Byte數組轉換爲int。BitConverter.ToInt32轉換2個字節

我只有兩個字節[0] [26],但該函數需要4個字節,所以我必須將兩個0字節添加到現有字節的前面。

什麼是最快的方法。

謝謝。

回答

2

您應該改爲使用(int)BitConverter.ToInt16(..)ToInt16被設置爲將兩個字節讀入short。然後,您只需將其轉換爲帶有演員表的int即可。

+1

但是可能想要記錄關於endianess。 – 2012-07-20 02:47:49

1

Array.Copy。下面是一些代碼:

byte[] arr = new byte[] { 0x12, 0x34 }; 
byte[] done = new byte[4]; 
Array.Copy(arr, 0, done, 2, 2); // http://msdn.microsoft.com/en-us/library/z50k9bft.aspx 
int myInt = BitConverter.ToInt32(done); // 0x00000026 

然而,`BitConverter.ToInt16通話(字節[])似乎是一個更好的主意,那麼就保存到一個int:

int myInt = BitConverter.ToInt16(...); 

記住儘管如此。在小端機上,{ 0x00 0x02 }實際上是512,而不是2(0x0002仍然是2,而不管字節順序)。

1

您應該調用`BitConverter.ToInt16,它只讀取兩個字節。

short可以隱式轉換爲int