title: Casting raw bytes to float is changing values of bytes? C#
body: <p>I'm casting raw bytes to a single precision float in the same way that I always have done for uint32s and int32s without issue. The problem is that this seems to change the actual value of the float. I have read that C# treats 32bit floats as IEEE754, and IEEE754 calculators agree with my raw bytes returned as a hex string rather than C#s interpretation of the float. Could someone please explain my misconception and how to fix it? I assume it is not an endianness problem since I can't seem to make the bytes match no matter what pattern I try on paper.</p>
  
  <pre><code>Score = (Single)(packetBytes[1187] &lt;&lt; 24 | packetBytes[1186] &lt;&lt; 16 | packetBytes[1185] &lt;&lt; 8 | packetBytes[1184]); // strange result
  HexStringScore = BitConverter.ToString(new byte[4] { packetBytes[1187], packetBytes[1186], packetBytes[1185], packetBytes[1184] }); // expected result
  HexStringCSharpFloat = BitConverter.ToString(BitConverter.GetBytes(Score)); // strange result
  </code></pre>
  
  <p>HexStringScore: 45-F2-5B-BC (raw data)</p>
  
  <p>Score: 1.173511E9 (wrong, According to Calculators number should be 7755.466796875)</p>
  
  <p>HexStringCSharpFloat: B7-E4-8B-4E</p>
  
  <p>In summary why wont my app understand that 45-F2-5B-BC is 7755.466796875</p>