繁体   English   中英

从偏移量查找字节

[英]Find bytes from an offset

所以我有这个:

public static long FindPosition(Stream stream, byte[] byteSequence)
{
     if (byteSequence.Length > stream.Length)
         return -1;

     byte[] buffer = new byte[byteSequence.Length];

     using (BufferedStream bufStream = new BufferedStream(stream, byteSequence.Length))
     {
           int i;
           while ((i = bufStream.Read(buffer, 0, byteSequence.Length)) == byteSequence.Length)
           {
                if (byteSequence.SequenceEqual(buffer))
                    return bufStream.Position - byteSequence.Length;
                else
                    bufStream.Position -= byteSequence.Length - PadLeftSequence(buffer, byteSequence);
           }                 
     }
     return  -1;
}
private static int PadLeftSequence(byte[] bytes, byte[] seqBytes)
{
     int i = 1;
     while (i < bytes.Length)
     {
          int n = bytes.Length - i;
          byte[] aux1 = new byte[n];
          byte[] aux2 = new byte[n];
          Array.Copy(bytes, i, aux1, 0, n);
          Array.Copy(seqBytes, aux2, n);
          if (aux1.SequenceEqual(aux2))
             return i;
             i++;
      }
      return i;
}

哪个方法可以完美地获取具有特定字节组的偏移量,但是现在我要反过来,从特定偏移量中查找一组字节。 我怎样才能做到这一点?

试试这个例子:

long offset = 100L; // Offset
int bytesCount = 20; // Number of bytes to read
byte[] buffer = new byte[bytesCount];

stream.Seek( offset, SeekOrigin.Begin ); // Set offset from Begin of a stream
stream.Read( buffer, 0, bytesCount ); // Read bytesCount from previous set offset

有关搜索阅读的更多详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM