zoukankan      html  css  js  c++  java
  • byte[]数组的正则表达式搜索 z

    在byte[]数组的特定位置进行正则表达式匹配。

    为了从硬盘上搜索特定类型的文件,需要根据文件的特征值进行匹配。

    对于已掌握文件结构的文件,采用hard-code的方式进行匹配;这样速度快;

    对于未掌握文件结构的文件,根据文件的特征数据,使用正则表达式进行匹配。缺点是匹配速度慢。但是相对于阅读或破解每种文件的数据结构,可以节约开发时间。

    由于C#中的正则表达式引擎仅提供了对字符串的正则匹配,而我们从硬盘上读取的数据是byte[]类型,所以需要添加对byte[]数据进行正则匹配的支持。

    另外,文件的特征值应(否则就很难称之为“特征”了)出现在固定的位置,所有要指定在特定位置进行正则匹配。

    using System.Text.RegularExpressions;        
    
    //byte[]数组Grep搜索,确定在指定offset处是否匹配正则表达式字符串
    //buffer:要搜索的byte[]数组
    //regex:要匹配的正则表达式字符串
    //offset:buffer数组的偏移
            public static bool BinaryRegex(byte[] buffer, string regex,int offset)
            {
                List<char> charList = new List<char>();
                foreach (byte b in buffer)
                {
                    charList.Add((char)b);
                }
                string bString = new String(charList.ToArray());
                Match match = Regex.Match(bString,regex);
                if (match.Success && match.Index == offset)
                    return true;
                else return false;
            }
    
  • 相关阅读:
    org-mode
    MediaWiki
    Creole
    AsciiDoc
    markdown
    图像对比度调整的simulink仿真总结
    Altera的几个常用的Synthesis attributes(转载)
    红外发送接收电路(转载)
    使用反相器的rc振荡电路
    两个小电路
  • 原文地址:https://www.cnblogs.com/zeroone/p/8983630.html
Copyright © 2011-2022 走看看