Оказывается, ещё начиная с .NET Standard в сборку System.Memory в нейсмпейс System.Buffers.Binary завезли класс BinaryPrimitives — расширенный аналог System.BitConverter. У BitConverter было два основных недостатка:
BitConverterвсегда конвертировал данные в соответствии c Endianess текущего процессора. Например, если приложение запущено на процессоре Intel x86 (amd64)-совместимой архитектуры, то порядок байт будеn Little-endian.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));
}