Files
Ragon/Ragon.Common/Protocol/RagonHeader.cs
T

35 lines
1.0 KiB
C#
Raw Permalink Normal View History

2022-04-30 08:20:17 +04:00
using System;
using System.Runtime.CompilerServices;
using NetStack.Buffers;
2022-05-01 21:39:46 +04:00
namespace Ragon.Common
2022-04-30 08:20:17 +04:00
{
2022-04-30 16:35:12 +04:00
public static class RagonHeader
2022-04-30 08:20:17 +04:00
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void WriteUShort(ushort id, ref Span<byte> data) {
data[0] = (byte)(id & 0x00FF);
data[1] = (byte)((id & 0xFF00) >> 8);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static ushort ReadUShort(ref ReadOnlySpan<byte> data)
{
return (ushort)(data[0] + (data[1] << 8));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void WriteInt(int id, ref Span<byte> data) {
data[0] = (byte)(id & 0x00FF);
data[1] = (byte)((id & 0xFF00) >> 8);
data[2] = (byte)((id & 0xFF00) >> 16);
data[3] = (byte)((id & 0xFF00) >> 24);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int ReadInt(ref ReadOnlySpan<byte> data)
{
return (ushort)(data[0] + (data[1] << 8) + (data[2] << 16) + (data[3] << 24));
}
}
}