2015-06-21 78 views
0

我將一個2字節長的字節數組轉換成一個短的(Int16)並通過一個消息框顯示它。將字節數組轉換爲短 - 奇怪的結果

MessageBox.Show(BitConverter.ToString(arr) + "\n" + BitConverter.ToInt16(arr, 0)); 

但是結果有點奇怪。這裏舉幾個例子:

Array Short Correct Result 
------------------------------- 
00-60 24576   24576 
AB-2A 10923   10923 
55-55 21845   21845 
00-80 -32768   32768 
AB-AA -21845   43691 
55-D5 -10923   54613 
+2

爲什麼結果很奇怪嗎? Int16不能表示32768及以上的值,只有-32768至+32767的值。你想要UInt16。 –

回答

2

您使用ToInt16,返回-32768到32767的數字,因此數字超出範圍將被截斷或調整到適合的範圍內。對於通過65535數字0,這似乎是你想要什麼,用ToUInt16代替:

MessageBox.Show(BitConverter.ToString(arr) + "\n" + BitConverter.ToUInt16(arr, 0));