我有两个ushort整数。整数:-32768,16992
基本上这两个值是modbus保持寄存器的整数值。我想转换为浮点数整数。当高/低阶值为负时,我的位转换器逻辑会在异常之下,但Modbus轮询显示该值为 35.12
错误: - 对于UInt16,值太大或太小。
void Main()
{
GetSingle(16992,-32768);
}
public static float GetSingle(ushort highOrderValue, ushort lowOrderValue)
{
return BitConverter.ToSingle(BitConverter.GetBytes(lowOrderValue).Concat(BitConverter.GetBytes(highOrderValue)).ToArray(), 0);
}
答案 0 :(得分:0)
您似乎在上下文中寻找unchecked
(不要抛出IntegerOverlow
但是使用静默二进制补码值):
void Main()
{
// unchecked(...) <- do not throw exception
GetSingle(16992, unchecked((ushort)-32768));
}
或者
void Main()
{
unchecked
{
GetSingle(16992, -32768);
}
}
GetSingle
方法的结果是
56.125