private static bool ReadFixedData(ref ArrayOffset <byte> input, int length, out byte[] data) { if (input.Length < length) { data = null; return(false); } data = new byte[length]; input.CopyTo(data, 0, length); input += length; return(true); }
private static bool ReadVariableDataUInt16Header(ref ArrayOffset <byte> input, out byte[] data) { const int headerSize = sizeof(ushort); if (input.Length < headerSize) { data = null; return(false); } var chunkSize = (ushort)(input[0] << 8 | input[1]); //Big endian read input += headerSize; if (chunkSize == 0) { data = new byte[0]; return(true); } var result = new byte[chunkSize]; input.CopyTo(result, 0, chunkSize); input += chunkSize; data = result; return(true); }