示例#1
0
        /// <summary>
        /// ストリームに対応するすべてのバッファーをクリアし、バッファー内のデータを基になるデバイスに書き込みます。
        /// </summary>
        public override void Flush()
        {
            if (this.Disposed)
            {
                throw new ObjectDisposedException("BaseStream");
            }

            bool little   = BitConverter.IsLittleEndian;
            bool big      = !little;
            long position = this.BaseStream.Position;

            this.BaseStream.Seek(0L, SeekOrigin.Begin);

            using (BinaryWriter bw = new BinaryWriter(this.BaseStream))
            {
                // 4 bytes, offset 4
                bw.Write(BitOperate.ReverseBytes((int)0x52494646, little));

                // 4 bytes, offset 8
                bw.Write(BitOperate.ReverseBytes((int)(this.WrittenBytes + 36), big));

                // 8 bytes, offset 16
                bw.Write(BitOperate.ReverseBytes((long)0x57415645666D7420, little));

                // 4 bytes, offset 20
                bw.Write(BitOperate.ReverseBytes((int)16, big));

                // 2 bytes, offset 22
                bw.Write(BitOperate.ReverseBytes((short)1, big));

                // 2 bytes, offset 24
                bw.Write(BitOperate.ReverseBytes((short)this.ChannelCount, big));

                // 4 bytes, offset 28
                bw.Write(BitOperate.ReverseBytes((int)this.SamplingRate, big));

                // 4 bytes, offset 32
                bw.Write(BitOperate.ReverseBytes((int)(this.SamplingRate * this.ChannelCount * (this.BitPerSample / 8)), big));

                // 2 bytes, offset 34
                bw.Write(BitOperate.ReverseBytes((short)(this.ChannelCount * (this.BitPerSample / 8)), big));

                // 2 bytes, offset 36
                bw.Write(BitOperate.ReverseBytes((short)this.BitPerSample, big));

                // 4 bytes, offset 40
                bw.Write(BitOperate.ReverseBytes((int)0x64617461, little));

                // 4 bytes, offset 44
                bw.Write(BitOperate.ReverseBytes((int)this.WrittenBytes, big));
            }

            this.BaseStream.Seek(position, SeekOrigin.Begin);
            this.BaseStream.Flush();
        }
示例#2
0
        public void ReverseBytesInt16Test()
        {
            unchecked
            {
                const short val_short         = (short)0x0123;
                const short val_short_reverse = (short)0x2301;

                Assert.AreEqual(val_short_reverse, BitOperate.ReverseBytes(val_short, true));
                Assert.AreEqual(val_short, BitOperate.ReverseBytes(val_short, false));
                Assert.AreEqual(val_short, BitOperate.ReverseBytes(BitOperate.ReverseBytes(val_short, true), true));
            }
        }
示例#3
0
        public void ReverseBytesInt64Test()
        {
            unchecked
            {
                const long val_long         = (long)0x0123456789ABCDEF;
                const long val_long_reverse = (long)0xEFCDAB8967452301;

                Assert.AreEqual(val_long_reverse, BitOperate.ReverseBytes(val_long, true));
                Assert.AreEqual(val_long, BitOperate.ReverseBytes(val_long, false));
                Assert.AreEqual(val_long, BitOperate.ReverseBytes(BitOperate.ReverseBytes(val_long, true), true));
            }
        }
示例#4
0
        public void ReverseBytesInt32Test()
        {
            unchecked
            {
                const int val_int         = (int)0x01234567;
                const int val_int_reverse = (int)0x67452301;

                Assert.AreEqual(val_int_reverse, BitOperate.ReverseBytes(val_int, true));
                Assert.AreEqual(val_int, BitOperate.ReverseBytes(val_int, false));
                Assert.AreEqual(val_int, BitOperate.ReverseBytes(BitOperate.ReverseBytes(val_int, true), true));
            }
        }