将byte []转换为single

时间:2014-08-14 20:50:13

标签: c# .net

问题:

我正在尝试将byte[]转换为single。我尝试过使用BitConverter.ToSingle()并且没有达到预期效果。

数组的内容是:

  

0
  0
  0
  100

所需的输出为100;我知道Int会为此工作但我只是选择那个号码以便于调试。我也尝试将100移动到阵列中的每个可能位置,没有运气。

我的输出总是看起来像9.3345534545E 或类似的不同数字的东西。 任何想法?

1 个答案:

答案 0 :(得分:5)

IEE-754类型(C {中的SingleDouble - floatdouble没有简单的二进制表示,因此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 );