Пример #1
0
        /// <summary>
        /// Writes a double field value, including tag, to the stream.
        /// </summary>
        public void WriteDoubleNoTag(double value)
        {
#if SILVERLIGHT || COMPACT_FRAMEWORK_35
            byte[] rawBytes = BitConverter.GetBytes(value);
            if (!BitConverter.IsLittleEndian)
            {
                ByteArray.Reverse(rawBytes);
            }

            if (limit - position >= 8)
            {
                buffer[position++] = rawBytes[0];
                buffer[position++] = rawBytes[1];
                buffer[position++] = rawBytes[2];
                buffer[position++] = rawBytes[3];
                buffer[position++] = rawBytes[4];
                buffer[position++] = rawBytes[5];
                buffer[position++] = rawBytes[6];
                buffer[position++] = rawBytes[7];
            }
            else
            {
                WriteRawBytes(rawBytes, 0, 8);
            }
#else
            WriteRawLittleEndian64((ulong)BitConverter.DoubleToInt64Bits(value));
#endif
        }
Пример #2
0
 public bool ReadFloat(ref float value)
 {
     if (BitConverter.IsLittleEndian && 4 <= this.bufferSize - this.bufferPos)
     {
         value           = BitConverter.ToSingle(this.buffer, this.bufferPos);
         this.bufferPos += 4;
     }
     else
     {
         byte[] array = this.ReadRawBytes(4);
         if (!BitConverter.IsLittleEndian)
         {
             ByteArray.Reverse(array);
         }
         value = BitConverter.ToSingle(array, 0);
     }
     return(true);
 }
Пример #3
0
 public bool ReadDouble(ref double value)
 {
     if (BitConverter.IsLittleEndian && 8 <= this.bufferSize - this.bufferPos)
     {
         value           = BitConverter.ToDouble(this.buffer, this.bufferPos);
         this.bufferPos += 8;
     }
     else
     {
         byte[] array = this.ReadRawBytes(8);
         if (!BitConverter.IsLittleEndian)
         {
             ByteArray.Reverse(array);
         }
         value = BitConverter.ToDouble(array, 0);
     }
     return(true);
 }
Пример #4
0
        /// <summary>
        /// Writes a float field value, without a tag, to the stream.
        /// </summary>
        public void WriteFloatNoTag(float value)
        {
            byte[] rawBytes = BitConverter.GetBytes(value);
            if (!BitConverter.IsLittleEndian)
            {
                ByteArray.Reverse(rawBytes);
            }

            if (limit - position >= 4)
            {
                buffer[position++] = rawBytes[0];
                buffer[position++] = rawBytes[1];
                buffer[position++] = rawBytes[2];
                buffer[position++] = rawBytes[3];
            }
            else
            {
                WriteRawBytes(rawBytes, 0, 4);
            }
        }