首先 Ushort为16bit无符号整型:
所以 数据 范围是 0 - 65535
Short为16位有符号整型:
也就是说他的符号位 1位,数据位 只有15位
所以数据范围是:-32768~32767
[signed] long [int]有符号长整型,数值范围为:-2147483648~2147483647。 unsigned int 无符号基本整型,数值范围为:0~65535。
所以在使用NModBus获取到UShort可以在进行强转的方式:
方法一 亲测可以用,操作比较简单
ushort uint32In;
uint32In = ushort.Parse(textBox1.Text);
short int32Out;
*int32Out = (short)uint32In;*//即为所求
方法二:转换成位在操作
StructLayout(LayoutKind.Explicit)]
struct EvilConverter
{
[FieldOffset(0)] short ShortValue;
[FieldOffset(0)] ushort UShortValue;
public static short Convert(ushort source)
{
var converter = new EvilConverter();
converter.UShortValue = source;
return converter.ShortValue;
}
}