[英]How do I cast a 16 bit 'short' into a 32-bit integer in C#?
我有一個16位簽名號碼來自硬件。 我想把它變成Int32
。
當我把它作為一個short
,它會在數字為負時偶爾起作用。 但是,大多數情況下,我first chance exception of type 'System.OverflowException' occurred
的first chance exception of type 'System.OverflowException' occurred
。
這是我的代碼:
int M1;
M1 = (short)(INBuffer[3] << 8) + INBuffer[2];
如何在C#中將16位短整型轉換為32位整數?
假設INBuffer
是一個字節數組,您可以安全地轉換為ushort
而不是short
。 這是因為如果高階字節的最高位是1,則一旦它被位移,該值對於有符號短路來說太大。
在你的情況下,如果你想要一個int
,根本不需要轉換 - 位移輸出一個int
,並且添加一個byte
再次留下一個int
- 你已經在那里......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.