Skip to content

Instantly share code, notes, and snippets.

View DavidKlempfner's full-sized avatar

David Klempfner DavidKlempfner

View GitHub Profile
string forwardsWavFilePath = @"C:\ForwardsWavFile.wav";
byte[] forwardsWavFileStreamByteArray = PopulateForwardsWavFileByteArray(forwardsWavFilePath);
private static byte[] PopulateForwardsWavFileByteArray(string forwardsWavFilePath)
{
byte[] forwardsWavFileStreamByteArray;
using (FileStream forwardsWavFileStream = new FileStream(forwardsWavFilePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
forwardsWavFileStreamByteArray = new byte[forwardsWavFileStream.Length];
@DavidKlempfner
DavidKlempfner / Step2ReverseWav.cs
Created December 12, 2019 10:07
Step2ReverseWav.cs
byte[] forwardsArrayWithOnlyHeaders = CreateForwardsArrayWithOnlyHeaders(forwardsWavFileStreamByteArray, Constants.StartIndexOfAudioDataChunk);
private static byte[] CreateForwardsArrayWithOnlyHeaders(byte[] forwardsWavFileStreamByteArray, int startIndexOfDataChunk)
{
byte[] forwardsArrayWithOnlyHeaders = new byte[startIndexOfDataChunk];
Array.Copy(forwardsWavFileStreamByteArray, 0, forwardsArrayWithOnlyHeaders, 0, startIndexOfDataChunk);
return forwardsArrayWithOnlyHeaders;
}
@DavidKlempfner
DavidKlempfner / Step3ReverseWav.cs
Created December 12, 2019 10:08
Step3ReverseWav.cs
byte[] reversedArrayWithOnlyAudioData = ReverseTheForwardsArrayWithOnlyAudioData(bytesPerSample, forwardsArrayWithOnlyAudioData);
private static byte[] ReverseTheForwardsArrayWithOnlyAudioData(int bytesPerSample, byte[] forwardsArrayWithOnlyAudioData)
{
int length = forwardsArrayWithOnlyAudioData.Length;
byte[] reversedArrayWithOnlyAudioData = new byte[length];
int sampleIdentifier = 0;
for (int i = 0; i < length; i++)
{
if (i != 0 && i % bytesPerSample == 0)
@DavidKlempfner
DavidKlempfner / Step4ReverseWav.cs
Created December 12, 2019 10:08
Step4ReverseWav.cs
byte[] reversedWavFileStreamByteArray = CombineArrays(forwardsArrayWithOnlyHeaders, reversedArrayWithOnlyAudioData);
private static byte[] CombineArrays(byte[] forwardsArrayWithOnlyHeaders, byte[] reversedArrayWithOnlyAudioData)
{
byte[] reversedWavFileStreamByteArray = new byte[forwardsArrayWithOnlyHeaders.Length + reversedArrayWithOnlyAudioData.Length];
Array.Copy(forwardsArrayWithOnlyHeaders, reversedWavFileStreamByteArray, forwardsArrayWithOnlyHeaders.Length);
Array.Copy(reversedArrayWithOnlyAudioData, 0, reversedWavFileStreamByteArray, forwardsArrayWithOnlyHeaders.Length, reversedArrayWithOnlyAudioData.Length);
return reversedWavFileStreamByteArray;
}
@DavidKlempfner
DavidKlempfner / Step5ReverseWav.cs
Created December 12, 2019 10:09
Step5ReverseWav.cs
string reversedWavFilePath = @"C:\ReversedWavFile.wav";
WriteReversedWavFileByteArrayToFile(reversedWavFileStreamByteArray, reversedWavFilePath);
private static void WriteReversedWavFileByteArrayToFile(byte[] reversedWavFileStreamByteArray, string reversedWavFilePath)
{
using (FileStream reversedFileStream = new FileStream(reversedWavFilePath, FileMode.Create, FileAccess.Write, FileShare.Write))
{
reversedFileStream.Write(reversedWavFileStreamByteArray, 0, reversedWavFileStreamByteArray.Length);
}
@DavidKlempfner
DavidKlempfner / HackingForeach.cs
Last active December 27, 2020 10:03
HackingForeach.cs
using System;
using System.Collections.Generic;
using System.Reflection;
namespace ConsoleApp9
{
class Program
{
static void Main(string[] args)
{
@DavidKlempfner
DavidKlempfner / CIL1.cs
Created December 12, 2019 10:18
CIL1.cs
class Program
{
static void Main(string[] args)
{
checked
{
byte b = byte.MaxValue; //255
b += 1; //OverflowException here
}
}
@DavidKlempfner
DavidKlempfner / CIL2.cs
Created December 12, 2019 10:19
CIL2.cs
class Program
{
static void Main(string[] args)
{
checked
{
addSomeBytes();
}
}
static void addSomeBytes()
@DavidKlempfner
DavidKlempfner / CIL1A.asm
Created December 12, 2019 10:20
CIL1A.asm
IL_0000: nop
IL_0001: ldc.i4 255
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: ldc.i4.1
IL_0009: add
IL_000a: conv.u1
IL_000b: stloc.0
IL_000c: ret
@DavidKlempfner
DavidKlempfner / CIL1B.asm
Created December 12, 2019 10:20
CIL1B.asm
IL_0000: nop
IL_0001: nop
IL_0002: ldc.i4 255
IL_0007: stloc.0
IL_0008: ldloc.0
IL_0009: ldc.i4.1
IL_000a: add.ovf
IL_000b: conv.ovf.u1
IL_000c: stloc.0
IL_000d: nop