将float转换为hex会导致C#中的数字超过预期?

时间:2012-06-05 05:44:08

标签: c# floating-point hex

我要将C#浮点数转换为2个字节,例如我的数字是12.4544,它应该是0x4147,或者是0x41474539,我使用了bitconverter.doubletoInt64,但它给了我一些东西很奇怪,我怎么能得到0x4147?

我正在创建一个MODBUS从站,我应该将每个浮点数发送为仅2个字节

感谢

1 个答案:

答案 0 :(得分:4)

编辑:亲爱的,亲爱的,我完全错过了这个,这是简短的回答:

使用BitConverter.GetBytes并将其传递给浮点数,如here.

所示

答案很长:

BitConverter不支持单精度浮点数,仅支持double s。你必须创建一个C#“union”,如下所示:

[StructLayout(LayoutKind.Explicit)]
class Floater
{
    [FieldOffset(0)]
    public float theFloat;
    [FieldOffset(0)]
    public int theInt;
}

将您的浮动置于theFloat并查看theInt