Skip to content

Instantly share code, notes, and snippets.

@Drawaes
Created March 13, 2017 02:18
Show Gist options
  • Save Drawaes/fa7572d680c8a804f1c9606ea80cb358 to your computer and use it in GitHub Desktop.
Save Drawaes/fa7572d680c8a804f1c9606ea80cb358 to your computer and use it in GitHub Desktop.
public struct BigEndianSpanReader
{
private Span<byte> _span;
public BigEndianSpanReader(Span<byte> span)
{
_span = span;
}
public int Length => _span.Length;
public Span<byte> ReadVector16()
{
var size = Read<ushort>();
var newSpan = _span.Slice(0, size);
_span = _span.Slice(size);
return newSpan;
}
public Span<byte> ReadVector8()
{
var size = Read<byte>();
var newSpan = _span.Slice(0, size);
_span = _span.Slice(size);
return newSpan;
}
public Span<byte> ReadFixed(int size)
{
var newSpan = _span.Slice(0, size);
_span = _span.Slice(size);
return newSpan;
}
public T Read<T>() where T : struct
{
var returnValue = UnsafeUtilities.Reverse(_span.Read<T>());
_span = _span.Slice(Unsafe.SizeOf<T>());
return returnValue;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment