簡體   English   中英

如何在C#中將16位“short”轉換為32位整數?

[英]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' occurredfirst 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM