我有一个16位有符号的数字从硬件进来。我想将它种成Int32
。如何在C#中将16位'short'转换为32位整数?
当我将它作为short
进行投射时,它偶尔会在数字为负数时有效。但大多数情况下,我得到first chance exception of type 'System.OverflowException' occurred
。
这里是我的代码:
int M1;
M1 = (short)(INBuffer[3] << 8) + INBuffer[2];
如何投出16位短于C#32位整数?
什么是INBuffer的类型?你能向我们展示它的声明吗? –
如果你想获得32位值,你为什么要选择“short”? –
这是一个猜测,这可能会被你对我上面的问题的回答所驳斥。如果'INBuffer'包含'short's,那么左移不能产生'OverflowException'(C#中的移位运算符只是默默地丢弃掉结果末尾的所有位),但是加法可以;它可能例如试图添加32000到32000.在这种情况下,你实际需要什么行为?如果你只想做C会做的事情并丢掉高位,你可以使用'unchecked'。如果没有,那么答案将取决于你*想要的东西。 –