I came across an old question, some people on here get a little butt hurt when you post on an old question, so I decided to post a tip/trick on how, in case someone is searching for the same.
static unsafe short[] ToInt16Array(byte[] data)
{
int length = data.Length >> 1;
short[] array = new short[length];
fixed(byte* ptr = data)
{
short* value = (short*)ptr;
for (int i = 0; i < length; i++, value++)
{
array[i] = (short)*value;
}
}
return array;
}