Indexof String By Byte[]


        
/// <summary>在字节数组里搜索字符串key第一次出现的位置
        
/// </summary>
        
/// <param name="b1">字节数组</param>
        
/// <param name="key">字符串</param>
        
/// <returns>搜索为空返回-1</returns>
        public static int BytesIndexOf(byte[] b1, string key)
        {
            
byte[] keyByte = System.Text.Encoding.Default.GetBytes(key);

            
for (int i = 0; i < b1.Length; i++)
            {
                
if (b1[i] == keyByte[0&& i + keyByte.Length < b1.Length)
                {
                    
bool tag = true;
                    
for (int find = 1; find < keyByte.Length - 1; find++)
                        
if (b1[i + find] != keyByte[find]) tag = false;
                    
if (tag) return i;
                }
            }
            
return -1;
        }


        
/// <summary>在字节数组里从指定位置开始搜索字符串key第一次出现的位置
        /// </summary>
        
/// <param name="b1">字节数组</param>
        /// <param name="start">开始搜索位置</param>
        /// <param name="key">字符串</param>
        /// <returns>搜索为空返回-1</returns>
        public static int BytesIndexOf(byte[] b1, int start, string key)
        {
            
byte[] keyByte = System.Text.Encoding.Default.GetBytes(key);

            
for (int i = start; i < b1.Length; i++)
            {
                
if (b1[i] == keyByte[0&& i + keyByte.Length < b1.Length)
                {
                    
bool tag = true;
                    
for (int find = 1; find < keyByte.Length - 1; find++)
                        
if (b1[i + find] != keyByte[find]) tag = false;
                    
if (tag) return i;
                }
            }
            
return -1;
        }

原文地址:https://www.cnblogs.com/bruceleeliya/p/1631422.html