I would like to manipulate the bitwise representation of floating-point numbers in C#. BinaryWriter and BinaryReader do it this way:
public virtual unsafe void Write(double value)
{
ulong num = *((ulong*) &value);
...
}
public virtual unsafe double ReadDouble()
{
...
ulong num3 = ...;
return *((double*) &num3);
}
Is there a way to do this without unsafe code, and without the overhead of actually using BinaryWriter and BinaryReader?
Are you trying to avoid unsafe code altogether, or do you just want an alternative to those specific methods on
BinaryReaderandBinaryWriter?You could use
BitConverter.DoubleToInt64BitsandBitConverter.Int64BitsToDouble, which are designed to do exactly what you need, although I think they use the same unsafe conversion behind-the-scenes as theBinaryReader/BinaryWritermethods.