I wrote my own class which converts C# standard primitives into byte arrays.
Later on, I took a look at the BitConverter
class source, to see how pros did it.
My code example:
public static byte[] getBytes(short value) {
byte[] bytes = new byte[2];
bytes[0] = (byte)(value >> 8);
bytes[1] = (byte)value;
return bytes;
}
BitConverter class code:
public unsafe static byte[] GetBytes(short value)
{
byte[] bytes = new byte[2];
fixed(byte* b = bytes)
*((short*)b) = value;
return bytes;
}
Why are their functions tagged as unsafe and use fixed operator?
Are such functions error prone even if they use unsafe? Should I just drop mine and use their implementation? Which is more efficient?