0

我有一个来自硬件的 16 位有符号数字。我想将其转换为Int32.

当我将它转换为 ashort时,它偶尔会在数字为负数时起作用。然而,大多数时候,我得到一个first chance exception of type 'System.OverflowException' occurred.

这是我的代码:

int M1;
M1 = (short)(INBuffer[3] << 8) + INBuffer[2];

如何在 C# 中将 16 位短整数转换为 32 位整数?

4

1 回答 1

2

假设INBuffer是一个字节数组,您可以安全地转换为 aushort而不是 a short。这是因为如果高位字节的最高位为 1,则一旦移位,该值对于带符号的 short 来说太大了。

在您的情况下,如果您想要 a int,则根本不需要强制转换-位移位输出 an int,并且byte再次添加 a 会留下 an int-您已经在那里...

于 2012-05-01T12:42:33.013 回答