问题:
我正在尝试将byte[]
转换为single
。我尝试过使用BitConverter.ToSingle()
并且没有达到预期效果。
数组的内容是:
0
0
0
100
所需的输出为100
;我知道Int会为此工作但我只是选择那个号码以便于调试。我也尝试将100移动到阵列中的每个可能位置,没有运气。
我的输出总是看起来像9.3345534545E
或类似的不同数字的东西。
任何想法?
答案 0 :(得分:5)
IEE-754类型(C {中的Single
和Double
- float
和double
没有简单的二进制表示,因此0x00 0x00 0x00 0x64
不代表0x64
的值(十进制100)。
IEEE-754值的实际原始二进制表示相当复杂,设置它们并执行从整数到IEE-754的转换实际上是不值得的(除非它是一个学习练习)。最好让图书馆/平台甚至处理器为您完成:
因为你的值是一个整数值,你需要先将它转换为Int32
,然后使用Convert
类(或一个简单的编译器转换,它将执行类型转换)罩)。
Int32 val = BitConverter.ToInt32( yourArray ); // assuming it's little-endian
Single s1 = (Single)val;
Single s2 = Convert.ToSingle( val );