/// <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 }
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); }
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); }
/// <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); } }