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);
}
}
}