I'd like to convert a given float
into its binary representation. I tried to write the float value into a MemoryStream
, read this MemoryStream
byte by byte and convert the bytes into their binary representation. But every attempt failed.
MemoryStream
was 0, when I didn't flush the StreamWriter
, and 1, when I did.I'm sure there is a better way to convert float
s to binary, but I also wanted to learn a little bit about the MemoryStream
class.
You can use BitConverter.GetBytes(float)
or use a BinaryWriter
wrapping a MemoryStream
and use BinaryWriter.Write(float)
. It's not clear exactly what you did with a MemoryStream
before, but you don't want to use StreamWriter
- that's for text.
Using BitConverter, not MemoryStream:
// -7 produces "1 10000001 11000000000000000000000"
static string FloatToBinary(float f)
{
StringBuilder sb = new StringBuilder();
Byte[] ba = BitConverter.GetBytes(f);
foreach (Byte b in ba)
for (int i = 0; i < 8; i++)
{
sb.Insert(0,((b>>i) & 1) == 1 ? "1" : "0");
}
string s = sb.ToString();
string r = s.Substring(0, 1) + " " + s.Substring(1, 8) + " " + s.Substring(9); //sign exponent mantissa
return r;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With