using System.Collections.Generic;
using System.Runtime.InteropServices;
public static void Main()
Memory<byte> val2 = new byte[7];
MemoryExtensions2.WriteToBuffer(val2, value, ref offset);
foreach(byte b in val2.Span)
Console.Write($"{b:X2} ");
MemoryExtensions2.WriteToBuffer(val2, value2, ref offset);
foreach(byte b in val2.Span)
Console.Write($"{b:X2} ");
MemoryExtensions2.WriteToBuffer(val2, value, ref offset);
foreach(byte b in val2.Span)
Console.Write($"{b:X2} ");
public static class MemoryExtensions2
public static void WriteToBuffer<T>(this Memory<byte> buffer, T value, ref int offset) where T : unmanaged
Span<T> span = MemoryMarshal.CreateSpan(ref value, 1);
Span<byte> data = MemoryMarshal.AsBytes(span);
data.CopyTo(buffer[offset .. (offset + size)].Span);
for(int i = 0; i < size; i++)