在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;
}

byte[]数组的正则表达式搜索 z的更多相关文章

  1. Eclipse中使用正则表达式搜索替换

    Eclipse中使用正则表达式搜索替换 分类:software | 标签: 正则表达  替换  eclipse  2011-11-29 11:28 阅读(1930)评论(0)编辑删除 最近在eclip ...

  2. Java中字符串和byte数组之间的相互转换

    1.将字符转换成byte数组 String str = "罗长"; byte[] sb = str.getBytes(); 2.将byte数组转换成字符 byte[] b={(by ...

  3. C# 对 byte 数组进行模式搜索

    本文告诉大家几个方法从 byte 数组找到对应的相同序列的数组 最简单的方法是进行数值判断,但是代码最少是使用Linq ,效率比较高是使用 Boyer-Moore 算法,下面就告诉大家几个算法的代码 ...

  4. go语言:多个[]byte数组合并成一个[]byte

    场景:在开发中,要将多个[]byte数组合并成一个[]byte,初步实现思路如下: 1.获取多个[]byte长度 2.构造一个二维码数组 3.循环将[]byte拷贝到二维数组中 package gst ...

  5. byte数组和File,InputStream互转

    1.将File.FileInputStream 转换为byte数组: File file = new File("file.txt"); InputStream input = n ...

  6. C# byte数组与Image的相互转换

    功能需求: 1.把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库. 2.把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示. 3.从图片byte ...

  7. 透过byte数组简单分析Java序列化、Kryo、ProtoBuf序列化

    序列化在高性能网络编程.分布式系统开发中是举足轻重的之前有用过Java序列化.ProtocolBuffer等,在这篇文章这里中简单分析序列化后的byte数组观察各种序列化的差异与性能,这里主要分析Ja ...

  8. 字符串与byte数组转换

    string weclome=""; byte[] data = new byte[1024]; //字符串转byte数组 data = Encoding.ASCII.GetByt ...

  9. C# 将文件转化成byte[]数组

    /// <summary> /// 将文件转换成byte[] 数组 /// </summary> /// <param name="fileUrl"& ...

随机推荐

  1. 不借助autolt实现下载文件到指定目录

    今天尝试了下不用借助autolt完成下载文件到指定目录, 好处:在于集成回归,远程机可以绕过执行autolt程序权限问题,导致autolt程序无法调用,不能完成脚本的回归 Firefox浏览器已经成功 ...

  2. CVE-2010-0249 IE8 UAF漏洞分析

    CVE-2010-0249 [CNNVD]Microsoft Internet Explorer非法事件操作内存破坏漏洞(CNNVD-201001-153) Microsoft Internet Ex ...

  3. 设置idealUI选中变量的颜色与同名称变量的颜色一致

  4. [转] 使用moment.js轻松管理日期和时间

    当前时间:moment().format('YYYY-MM-DD HH:mm:ss'); 2017-03-01 16:30:12 今天是星期几:moment().format('d'); 3 Unix ...

  5. IScroll5安卓重复点击兼容问题处理

    最近在做移动web开发,使用IScroll 5 的时候出现了设备之间兼容的问题: 情景如下: Android手机:点击滚动区间内的选项时出现点击时间重叠(类似事件冒泡的行为)问题 Apple手机:木有 ...

  6. 【AtCoder】AtCoder Petrozavodsk Contest 001

    A - Two Integers 如果\(X\)是\(Y\)的倍数的话不存在 可以输出\(X \cdot (\frac{Y}{gcd(X,Y)} - 1)\) 代码 #include <bits ...

  7. 【LOJ】#2491. 「BJOI2018」求和

    题解 对于50个k都维护一个\(i^k\)前缀和即可 查询的时候就是查询一段连续的区间和,再加上根节点的 代码 #include <bits/stdc++.h> #define fi fi ...

  8. 【LOJ】#2269. 「SDOI2017」切树游戏

    题解 把所有的数组一开始就FWT好然后再IFWT回去可以减小常数 从13s跑到0.7s-- 可以参照immortalCO的论文,感受一下毒瘤的动态动态DP 就是用数据结构维护线性递推的矩阵的乘积 由于 ...

  9. Codeforces Round #189 (Div. 1) C - Kalila and Dimna in the Logging Industry 斜率优化dp

    C - Kalila and Dimna in the Logging Industry 很容易能得到状态转移方程 dp[ i ] = min( dp[ j ] + b[ j ] * a[ i ] ) ...

  10. linux中没有dos2UNIX或者UNIX2dos命令解决办法

    安装方法: 在http://linux.softpedia.com/progDownload/Dos2Unix-Download-5519.html下载hd2u-1.0.0.tgz [root@loc ...