【发布时间】:2014-02-22 14:47:10
【问题描述】:
我已尝试使用以下 C# 代码将 十六进制文字转换为浮点 并获得正确的结果。我希望改为输入一个字节数组并将其转换为浮点数,但似乎无法得到正确的结果。
0x4229ec00 是当前格式。我需要它的byte array 格式...
new byte[]{ 0x01, 0x04, 0x01, 0x60, 0x00, 0x02, 0x70, 0x29}; //current output 42.48
代码如下:
byte[] bytes = BitConverter.GetBytes(0x4229ec00);
float myFloat = floatConversion(bytes);
public float floatConversion(byte[] bytes)
{
float myFloat = BitConverter.ToSingle(bytes, 0);
return myFloat;
}
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
@JamesBarrass:他正在转换 4 个字节,而不是 8 个字节:#42、#29、#ec 和 #00。
-
@RoyDictus:“类似...
0x01, 0x04, 0x01, 0x60, 0x00, 0x02, 0x70, 0x29 -
@Maria88:
float的大小确实是 4 个字节,而不是 8 个,所以如果你将那个 8 字节数组转换为浮点数,它就不是floatbutdouble. -
请把问题描述清楚。您想将 4N 个字节的数组转换为 N 个浮点数。是这样吗?你卡在哪一部分了?
-
我们正在努力解决的问题是您想用 8 个字节做什么。将它们转换为两个浮点数或一个双精度数。并且对字节顺序进行一些澄清会有所帮助。为什么你的字节是这个顺序的?他们是通过电线到达的吗?
标签: c# floating-point hex bytearray