C# 在C中将4字节数组转换为浮点时出现问题#
我正在使用C#,从一些控制器读取字节数组,并将它们转换为它们的类型。除浮点值外,所有值(int、string)正常。 假设得到的值是533174.1。 但是在读取数组时C# 在C中将4字节数组转换为浮点时出现问题#,c#,arrays,floating-point,byte,C#,Arrays,Floating Point,Byte,我正在使用C#,从一些控制器读取字节数组,并将它们转换为它们的类型。除浮点值外,所有值(int、string)正常。 假设得到的值是533174.1。 但是在读取数组时 byteArr[0]=2 byteArr[1]=73 byteArr[2]=98 byteArr[3]=43 得到一些乱七八糟的价值。 我使用了System.BitConverter.ToDouble(bytesArr,0)和其他方法,但没有成功。 请帮忙。 谢谢 伊格尔 耐力如何?你试过颠倒词序吗?在windows中,533
byteArr[0]=2
byteArr[1]=73
byteArr[2]=98
byteArr[3]=43
得到一些乱七八糟的价值。
我使用了System.BitConverter.ToDouble(bytesArr,0)
和其他方法,但没有成功。
请帮忙。
谢谢
伊格尔
你的字节被换成了字。此函数应将字节数组正确转换为浮点:
static float ToFloat(byte[] input)
{
byte[] newArray = new[] { input[2], input[3], input[0], input[1] };
return BitConverter.ToSingle(newArray, 0);
}
ToFloat(new byte[]{2,73,98,43}) == 533174.1
要将具有四个位置的字节数组转换为浮点,应使用convert.ToSingle,此函数读取所用数组中的四个位置,例如:
var input = new byte[]{103, 242, 50, 67};
var floatValue = BitConverter.ToSingle(input, 0);
浮动值=178.946884
Convert.ToSingle方法接收两个参数:字节数组和它开始获取值的位置
我们还可以获取长度更大的数组,并定义从何处开始转换
var secondInput = new byte[]{103, 242, 50, 67, 227, 55, 179, 67};
var firtsFloatValue = BitConverter.ToSingle(input, 0);
var secondFloatValue = BitConverter.ToSingle(input, 4);
firtsFloatValue=178.946884
二次浮点值=358.4366
最后,为了从[98,43,2,73]开始获得值533174.1,我们必须使用
var input = new byte[]{98, 43, 2, 73};
var floatValue = BitConverter.ToSingle(input, 0);
浮动值=533174.1