要浮动的字节数组
Byte array to float
我正在尝试将浮点数转换为长度为 4 的字节数组,然后再返回。但是我好像没用。
这是我所做的:
byte[] b = BitConverter.GetBytes(90);
float fb = BitConverter.ToSingle(b, 0);
我预计 fb = 90,但它是 1.26E-43。
我知道我的转换器是小端,所以我也试过反转数组,像这样:
byte[] b = BitConverter.GetBytes(90);
Array.Reverse(b);
float fb = BitConverter.ToSingle(b, 0);
然后得到答案fb = 9.0E+15.
有什么想法吗?
提前致谢!
BitConverter.GetBytes(90);
将为您提供 90
的 整数 值的字节。由于您需要 float
值的字节,因此需要指定:
BitConverter.GetBytes((float)90.0);
或
BitConverter.GetBytes(90.0f);
您需要更改 GetBytes 上的输入,它现在是一个整数。
它现在正在获取有关整数存储方式的字节,并将其解释为浮点数在内存中的存储方式。
将其更改为浮点数。
尝试:
byte[] b = BitConverter.GetBytes(90f); // <-- add an f for floats.
Array.Reverse(b);
float fb = BitConverter.ToSingle(b, 0);
90
是被编译器解释为 Int32
而不是 Single
的文字。所以你调用了 GetBytes()
.
的错误重载
使用:byte[] b = BitConverter.GetBytes(90f);
告诉编译器你想调用GetBytes(float)
。
我正在尝试将浮点数转换为长度为 4 的字节数组,然后再返回。但是我好像没用。
这是我所做的:
byte[] b = BitConverter.GetBytes(90);
float fb = BitConverter.ToSingle(b, 0);
我预计 fb = 90,但它是 1.26E-43。
我知道我的转换器是小端,所以我也试过反转数组,像这样:
byte[] b = BitConverter.GetBytes(90);
Array.Reverse(b);
float fb = BitConverter.ToSingle(b, 0);
然后得到答案fb = 9.0E+15.
有什么想法吗? 提前致谢!
BitConverter.GetBytes(90);
将为您提供 90
的 整数 值的字节。由于您需要 float
值的字节,因此需要指定:
BitConverter.GetBytes((float)90.0);
或
BitConverter.GetBytes(90.0f);
您需要更改 GetBytes 上的输入,它现在是一个整数。
它现在正在获取有关整数存储方式的字节,并将其解释为浮点数在内存中的存储方式。
将其更改为浮点数。
尝试:
byte[] b = BitConverter.GetBytes(90f); // <-- add an f for floats.
Array.Reverse(b);
float fb = BitConverter.ToSingle(b, 0);
90
是被编译器解释为 Int32
而不是 Single
的文字。所以你调用了 GetBytes()
.
使用:byte[] b = BitConverter.GetBytes(90f);
告诉编译器你想调用GetBytes(float)
。