Я написал свой собственный класс, который преобразует стандартные примитивы C# в байтовые массивы.Как работает функция GetBytes?
Позже я взглянул на класс BitConverter
source, чтобы узнать, как это сделали профессионалы.
Мой код Например:
public static byte[] getBytes(short value) {
byte[] bytes = new byte[2];
bytes[0] = (byte)(value >> 8);
bytes[1] = (byte)value;
return bytes;
}
BitConverter код класса:
public unsafe static byte[] GetBytes(short value)
{
byte[] bytes = new byte[2];
fixed(byte* b = bytes)
*((short*)b) = value;
return bytes;
}
Почему их функции помеченной как небезопасные и использовать фиксированный оператор?
Являются ли такие функции склонными к ошибкам, даже если они небезопасны? Должен ли я просто отказаться от своей работы и использовать ее реализацию? Что более эффективно?
Эти функции выполняют разные вещи: первый использует большой endian, последний нативный endian. – CodesInChaos