Класс BinaryPrimitives в .NET. Замена для BitConverter

Оказывается, ещё начиная с .NET Standard в сборку System.Memory в нейсмпейс System.Buffers.Binary завезли класс BinaryPrimitives — расширенный аналог System.BitConverter. У BitConverter было два основных недостатка:

  1. BitConverter всегда конвертировал данные в соответствии c Endianess текущего процессора. Например, если приложение запущено на процессоре Intel x86 (amd64)-совместимой архитектуры, то порядок байт будеn Little-endian.
  2. BitConverter не умеет работать со Span<byte>.

Лично мне нужна была поддержка Big-endian и Span<T> и приходилось писать свои конверторы. Теперь можно пользоваться методами из BinaryPrimitives.

Например:

using System.Buffers.Binary;

public static ushort GetYear(ReadOnlySpan<byte> dateTime)
{
  return BinaryPrimitives.ReadUInt16BigEndian(dateTime.Slice(2));
}