Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个来自硬件的 16 位有符号数字。我想将其转换为Int32.
Int32
当我将它转换为 ashort时,它偶尔会在数字为负数时起作用。然而,大多数时候,我得到一个first chance exception of type 'System.OverflowException' occurred.
short
first chance exception of type 'System.OverflowException' occurred
这是我的代码:
int M1; M1 = (short)(INBuffer[3] << 8) + INBuffer[2];
如何在 C# 中将 16 位短整数转换为 32 位整数?
假设INBuffer是一个字节数组,您可以安全地转换为 aushort而不是 a short。这是因为如果高位字节的最高位为 1,则一旦移位,该值对于带符号的 short 来说太大了。
INBuffer
ushort
在您的情况下,如果您想要 a int,则根本不需要强制转换-位移位输出 an int,并且byte再次添加 a 会留下 an int-您已经在那里...
int
byte