示例#1
0
        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;
            }
        }
示例#2
0
        public void FindLargestMatchByte3()
        {
            var A = new byte[] { 3, 3, 3 };

            fixed(byte *_A = A)
            {
                Assert.Equal(3, PointerUtils.FindLargestMatchByte(_A, (byte)3, A.Length));
            }
        }
示例#3
0
        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));
            }
        }
示例#4
0
        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));
            }
        }