Пример #1
0
        internal static void GetBytes(double value, byte[] buffer)
        {
            var bits = new Float64Bits(value);

            if (BitConverter.IsLittleEndian)
            {
                buffer[0] = bits.byte7;
                buffer[1] = bits.byte6;
                buffer[2] = bits.byte5;
                buffer[3] = bits.byte4;
                buffer[4] = bits.byte3;
                buffer[5] = bits.byte2;
                buffer[6] = bits.byte1;
                buffer[7] = bits.byte0;
            }
            else
            {
                buffer[0] = bits.byte0;
                buffer[1] = bits.byte1;
                buffer[2] = bits.byte2;
                buffer[3] = bits.byte3;
                buffer[4] = bits.byte4;
                buffer[5] = bits.byte5;
                buffer[6] = bits.byte6;
                buffer[7] = bits.byte7;
            }
        }
Пример #2
0
        internal static double ToDouble(byte[] bigEndianBytes)
        {
            Float64Bits bits = default(Float64Bits);

            if (BitConverter.IsLittleEndian)
            {
                bits.byte0 = bigEndianBytes[7];
                bits.byte1 = bigEndianBytes[6];
                bits.byte2 = bigEndianBytes[5];
                bits.byte3 = bigEndianBytes[4];
                bits.byte4 = bigEndianBytes[3];
                bits.byte5 = bigEndianBytes[2];
                bits.byte6 = bigEndianBytes[1];
                bits.byte7 = bigEndianBytes[0];
            }
            else
            {
                bits.byte0 = bigEndianBytes[0];
                bits.byte1 = bigEndianBytes[1];
                bits.byte2 = bigEndianBytes[2];
                bits.byte3 = bigEndianBytes[3];
                bits.byte4 = bigEndianBytes[4];
                bits.byte5 = bigEndianBytes[5];
                bits.byte6 = bigEndianBytes[6];
                bits.byte7 = bigEndianBytes[7];
            }
            return(bits.value);
        }
Пример #3
0
 public double ReadFloat64()
 {
     if (stream.Read(buffer, 0, 8) == 8)
     {
         return(Float64Bits.ToDouble(buffer));
     }
     throw new FormatException();
 }
Пример #4
0
 public void Write(double value)
 {
     WriteFormat(Format.Float64);
     Float64Bits.GetBytes(value, buffer);
     stream.Write(buffer, 0, 8);
 }