我要将C#浮点数转换为2个字节,例如我的数字是12.4544,它应该是0x4147,或者是0x41474539,我使用了bitconverter.doubletoInt64,但它给了我一些东西很奇怪,我怎么能得到0x4147?
我正在创建一个MODBUS从站,我应该将每个浮点数发送为仅2个字节
感谢
答案 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