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

时间:2012-05-01 12:38:10

标签: c# casting

我有一个16位签名号码来自硬件。我想将其加入Int32

当我将其转换为short时,它会在数字为负时偶尔运行。但大多数时候,我得到first chance exception of type 'System.OverflowException' occurred

这是我的代码:

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

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

1 个答案:

答案 0 :(得分:2)

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

在您的情况下,如果您想要int,则根本不需要投射 - 位移输出int,并且byte的添加再次留下{{ 1}} - 你已经在那里......