c# byte[]數組的Regex搜尋

來源:互聯網
上載者:User

標籤:

在byte[]數組的特定位置進行Regex匹配。

為了從硬碟上搜尋特定類型的檔案,需要根據檔案的特徵值進行匹配。

對於已掌握檔案結構的檔案,採用hard-code的方式進行匹配;這樣速度快;

對於未掌握檔案結構的檔案,根據檔案的特徵資料,使用Regex進行匹配。缺點是匹配速度慢。但是相對於閱讀或破解每種檔案的資料結構,可以節約開發時間。

由於C#中的Regex引擎僅提供了對字串的正則匹配,而我們從硬碟上讀取的資料是byte[]類型,所以需要添加對byte[]資料進行正則匹配的支援。

另外,檔案的特徵值應(否則就很難稱之為“特徵”了)出現在固定的位置,所有要指定在特定位置進行正則匹配。

 1 using System.Text.RegularExpressions;         2  3 //byte[]數組Grep搜尋,確定在指定offset處是否匹配Regex字串 4 //buffer:要搜尋的byte[]數組 5 //regex:要匹配的Regex字串 6 //offset:buffer數組的位移 7         public static bool BinaryRegex(byte[] buffer, string regex,int offset) 8         { 9             List<char> charList = new List<char>();10             foreach (byte b in buffer)11             {12                 charList.Add((char)b);13             }14             string bString = new String(charList.ToArray());15             Match match = Regex.Match(bString,regex);16             if (match.Success && match.Index == offset)17                 return true;18             else return false;19         }

 

c# byte[]數組的Regex搜尋

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.