public override void Write(double value) { var doubleUnion = new ExtendedBinary.DoubleUnion(value); if (IsBigEndian) { dataBuffer[0] = (byte)(doubleUnion.ULong >> 56); dataBuffer[1] = (byte)(doubleUnion.ULong >> 48); dataBuffer[2] = (byte)(doubleUnion.ULong >> 40); dataBuffer[3] = (byte)(doubleUnion.ULong >> 32); dataBuffer[4] = (byte)(doubleUnion.ULong >> 24); dataBuffer[5] = (byte)(doubleUnion.ULong >> 16); dataBuffer[6] = (byte)(doubleUnion.ULong >> 8); dataBuffer[7] = (byte)(doubleUnion.ULong); } else { dataBuffer[0] = (byte)(doubleUnion.ULong); dataBuffer[1] = (byte)(doubleUnion.ULong >> 8); dataBuffer[2] = (byte)(doubleUnion.ULong >> 16); dataBuffer[3] = (byte)(doubleUnion.ULong >> 24); dataBuffer[4] = (byte)(doubleUnion.ULong >> 32); dataBuffer[5] = (byte)(doubleUnion.ULong >> 40); dataBuffer[6] = (byte)(doubleUnion.ULong >> 48); dataBuffer[7] = (byte)(doubleUnion.ULong >> 56); } Write(dataBuffer, 0, 8); }
public override double ReadDouble() { var buffer = ReadBytes(8); var doubleUnion = new ExtendedBinary.DoubleUnion(); if (IsBigEndian) { doubleUnion.ULong = ( (ulong)buffer[0] << 56 | (ulong)buffer[1] << 48 | (ulong)buffer[2] << 40 | (ulong)buffer[3] << 32 | (ulong)buffer[4] << 24 | (ulong)buffer[5] << 16 | (ulong)buffer[6] << 8 | buffer[7]); } else { doubleUnion.ULong = ( (ulong)buffer[7] << 56 | (ulong)buffer[6] << 48 | (ulong)buffer[5] << 40 | (ulong)buffer[4] << 32 | (ulong)buffer[3] << 24 | (ulong)buffer[2] << 16 | (ulong)buffer[1] << 8 | buffer[0]); } return(doubleUnion.Double); }