<PackageReference Include="SSH.NET" Version="2024.1.0" />

Pack

static class Pack
Provides convenience methods for conversion to and from both Big Endian and Little Endian.
using System; using System.Buffers.Binary; namespace Renci.SshNet.Common { internal static class Pack { internal static ushort LittleEndianToUInt16(byte[] buffer) { return BinaryPrimitives.ReadUInt16LittleEndian(buffer); } internal static uint LittleEndianToUInt32(byte[] buffer) { return BinaryPrimitives.ReadUInt32LittleEndian(buffer); } internal static ulong LittleEndianToUInt64(byte[] buffer) { return BinaryPrimitives.ReadUInt64LittleEndian(buffer); } internal static byte[] UInt16ToLittleEndian(ushort value) { byte[] array = new byte[2]; UInt16ToLittleEndian(value, array); return array; } private static void UInt16ToLittleEndian(ushort value, byte[] buffer) { BinaryPrimitives.WriteUInt16LittleEndian(buffer, value); } internal static byte[] UInt32ToLittleEndian(uint value) { byte[] array = new byte[4]; UInt32ToLittleEndian(value, array); return array; } private static void UInt32ToLittleEndian(uint value, byte[] buffer) { BinaryPrimitives.WriteUInt32LittleEndian(buffer, value); } internal static byte[] UInt64ToLittleEndian(ulong value) { byte[] array = new byte[8]; UInt64ToLittleEndian(value, array); return array; } private static void UInt64ToLittleEndian(ulong value, byte[] buffer) { BinaryPrimitives.WriteUInt64LittleEndian(buffer, value); } internal static byte[] UInt16ToBigEndian(ushort value) { byte[] array = new byte[2]; UInt16ToBigEndian(value, array, 0); return array; } internal static void UInt16ToBigEndian(ushort value, byte[] buffer, int offset) { BinaryPrimitives.WriteUInt16BigEndian(buffer.AsSpan(offset), value); } internal static void UInt32ToBigEndian(uint value, byte[] buffer) { UInt32ToBigEndian(value, buffer, 0); } internal static void UInt32ToBigEndian(uint value, byte[] buffer, int offset) { BinaryPrimitives.WriteUInt32BigEndian(buffer.AsSpan(offset), value); } internal static byte[] UInt32ToBigEndian(uint value) { byte[] array = new byte[4]; UInt32ToBigEndian(value, array); return array; } internal static byte[] UInt64ToBigEndian(ulong value) { byte[] array = new byte[8]; UInt64ToBigEndian(value, array, 0); return array; } private static void UInt64ToBigEndian(ulong value, byte[] buffer, int offset) { BinaryPrimitives.WriteUInt64BigEndian(buffer.AsSpan(offset), value); } internal static ushort BigEndianToUInt16(byte[] buffer) { return BinaryPrimitives.ReadUInt16BigEndian(buffer); } internal static uint BigEndianToUInt32(byte[] buffer, int offset) { return BinaryPrimitives.ReadUInt32BigEndian(buffer.AsSpan(offset)); } internal static uint BigEndianToUInt32(byte[] buffer) { return BigEndianToUInt32(buffer, 0); } internal static ulong BigEndianToUInt64(byte[] buffer) { return BinaryPrimitives.ReadUInt64BigEndian(buffer); } } }