整数值转换为浮点数

时间:2017-04-03 07:13:02

标签: c# modbus

我有两个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);
}

1 个答案:

答案 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