程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#的二進制字節流查找函數IndexOf使用示例

C#的二進制字節流查找函數IndexOf使用示例

編輯:關於C#
/// <summary>  
/// 報告指定的 System.Byte[] 在此實例中的第一個匹配項的索引。  
/// </summary>  
/// <param name="srcBytes">被執行查找的 System.Byte[]。</param>  
/// <param name="searchBytes">要查找的 System.Byte[]。</param>  
/// <returns>如果找到該字節數組,則為 searchBytes 的索引位置;如果未找到該字節數組,則為 -1。如果 searchBytes 為 null 或者長度為0,則返回值為 -1。</returns>  
/// URL:http://www.bianceng.cn/Programming/csharp/201410/45782.htm
internal int IndexOf(byte[] srcBytes, byte[] searchBytes)  
{  
    if (srcBytes == null) { return -1; }  
    if (searchBytes == null) { return -1; }  
    if (srcBytes.Length == 0) { return -1; }  
    if (searchBytes.Length == 0) { return -1; }  
    if (srcBytes.Length < searchBytes.Length) { return -1; }  
    for (int i = 0; i < srcBytes.Length - searchBytes.Length; i++)  
    {  
        if (srcBytes[i] == searchBytes[0])  
        {  
            if (searchBytes.Length == 1) { return i; }  
            bool flag = true;  
            for (int j = 1; j < searchBytes.Length; j++)  
            {  
                if (srcBytes[i + j] != searchBytes[j])  
                {  
                    flag = false;  
                    break;  
                }  
            }  
            if (flag) { return i; }  
        }  
    }  
    return -1;  
}

使用示例:

receiveData = new byte[1024];  
int receiveLen = socket.ReceiveFrom(receiveData, ref ep);  
receiveData = this.SubByte(receiveData, 0, receiveLen);  
 if (this.IndexOf(receiveData, System.Text.Encoding.Unicode.GetBytes("Exec_Exit")) != -1)  
{  
    this.runing = false;  
    break;  
 }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved