我有一個16位有符號的數字從硬件進來。我想將它種成Int32
。如何在C#中將16位'short'轉換爲32位整數?
當我將它作爲short
進行投射時,它偶爾會在數字爲負數時有效。但大多數情況下,我得到first chance exception of type 'System.OverflowException' occurred
。
這裏是我的代碼:
int M1;
M1 = (short)(INBuffer[3] << 8) + INBuffer[2];
如何投出16位短於C#32位整數?
什麼是INBuffer的類型?你能向我們展示它的聲明嗎? –
如果你想獲得32位值,你爲什麼要選擇「short」? –
這是一個猜測,這可能會被你對我上面的問題的回答所駁斥。如果'INBuffer'包含'short's,那麼左移不能產生'OverflowException'(C#中的移位運算符只是默默地丟棄掉結果末尾的所有位),但是加法可以;它可能例如試圖添加32000到32000.在這種情況下,你實際需要什麼行爲?如果你只想做C會做的事情並丟掉高位,你可以使用'unchecked'。如果沒有,那麼答案將取決於你*想要的東西。 –