Exemple #1
0
        public override void Write(double value)
        {
            ulong value64 = BitConverterExtensions.ToUInt64(value);

            FillInnerBuffer(value64);
            Write(m_buffer, 0, sizeof(double));
        }
Exemple #2
0
        public override void Write(float value)
        {
            uint value32 = BitConverterExtensions.ToUInt32(value);

            FillInnerBuffer(value32);
            Write(m_buffer, 0, sizeof(float));
        }
Exemple #3
0
        public void WriteArray(double[] buffer, int index, int count)
        {
            FillInnerBuffer(count);
            Write(m_buffer, 0, sizeof(int));

            int byteIndex = 0;
            int byteCount = count * sizeof(double);
            int last      = index + count;

            while (index < last)
            {
                int left    = byteCount - byteIndex;
                int toWrite = left < BufferSize ? left : BufferSize;
                for (int i = 0; i < toWrite; i += sizeof(double), index++)
                {
                    FillInnerBuffer(BitConverterExtensions.ToUInt64(buffer[index]), i);
                }
                Write(m_buffer, 0, toWrite);
                byteIndex += toWrite;
            }
            if (IsAlignArray)
            {
                AlignStream();
            }
        }
Exemple #4
0
        public void WriteArray(float[] buffer, int index, int count)
        {
            FillInnerBuffer(buffer.Length);
            Write(m_buffer, 0, sizeof(int));

            int byteIndex = 0;
            int byteCount = buffer.Length * sizeof(float);
            int last      = index + count;

            while (index < last)
            {
                int left    = byteCount - byteIndex;
                int toWrite = left < BufferSize ? left : BufferSize;
                for (int i = 0; i < toWrite; i += sizeof(float), index++)
                {
                    FillInnerBuffer(BitConverterExtensions.ToUInt32(buffer[index]), i);
                }
                Write(m_buffer, 0, toWrite);
                byteIndex += toWrite;
            }
        }
Exemple #5
0
        public int Read(double[] buffer, int index, int count)
        {
            int byteIndex = 0;
            int byteCount = count * sizeof(double);
            int first     = index;
            int last      = index + count;

            while (index < last)
            {
                int left   = byteCount - byteIndex;
                int toRead = left < BufferSize ? left : BufferSize;
                int read   = Read(m_buffer, 0, toRead);
                for (int i = 0; i < read; i += sizeof(double), index++)
                {
                    buffer[index] = BitConverterExtensions.ToDouble(BufferToUInt64(i));
                }
                byteIndex += read;
                if (read < toRead)
                {
                    return(index - first);
                }
            }
            return(count);
        }
Exemple #6
0
 public override double ReadDouble()
 {
     FillInnerBuffer(sizeof(double));
     return(BitConverterExtensions.ToDouble(BufferToUInt64()));
 }
Exemple #7
0
 public override float ReadSingle()
 {
     FillInnerBuffer(sizeof(float));
     return(BitConverterExtensions.ToSingle(BufferToUInt32()));
 }
 public static StringBuilder AppendHex(this StringBuilder _this, double value)
 {
     return(AppendHex(_this, BitConverterExtensions.ToUInt64(value)));
 }