unsafe public void Skip(int Skip = 1) { _Offset += Skip; if (_Offset >= Data.Length) { Length = 0; return; } if (Skip >= Length) { Byte = Data[_Offset]; Length = 0; fixed(byte *Start = &Data[_Offset]) fixed(byte *End = &Data[Data.Length - 1]) { int MaxLen = (int)(End - Start); Length = PointerUtils.FindLargestMatchByte(Start, Start[0], MaxLen); } } else { Length -= Skip; } }
public void FindLargestMatchByte3() { var A = new byte[] { 3, 3, 3 }; fixed(byte *_A = A) { Assert.Equal(3, PointerUtils.FindLargestMatchByte(_A, (byte)3, A.Length)); } }
public void FindLargestMatchByte13() { var A = new byte[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 }; fixed(byte *_A = A) { Assert.Equal(13, PointerUtils.FindLargestMatchByte(_A, (byte)1, A.Length)); } }
public void FindLargestMatchByte1() { var A = new byte[] { 1, 0, 2, 2, 2 }; fixed(byte *_A = A) { Assert.AreEqual(1, PointerUtils.FindLargestMatchByte(_A, (byte)1, A.Length - 3)); } }