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