C# 二进制字节流查找函数IndexOf

这篇具有很好参考价值的文章主要介绍了C# 二进制字节流查找函数IndexOf。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

/// <summary> 

/// 报告指定的 System.Byte[] 在此实例中的第一个匹配项的索引。 

/// </summary> 

/// <param name="srcBytes">被执行查找的 System.Byte[]。</param> 

/// <param name="searchBytes">要查找的 System.Byte[]。</param> 

/// <returns>如果找到该字节数组,则为 searchBytes 的索引位置;如果未找到该字节数组,则为 -1。如果 searchBytes 为 null 或者长度为0,则返回值为 -1。</returns> 

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

**************************************************************************************************************文章来源地址https://www.toymoban.com/news/detail-538672.html

到了这里,关于C# 二进制字节流查找函数IndexOf的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#对象二进制序列化优化:位域技术实现极限压缩

    目录 1. 引言 2. 优化过程 2.1. 进程对象定义与初步分析 2.2. 排除Json序列化 2.3. 使用BinaryWriter进行二进制序列化 2.4. 数据类型调整 2.5. 再次数据类型调整与位域优化 3. 优化效果与总结 在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们需要开发一个监控程序

    2024年01月22日
    浏览(46)
  • C#蓝牙连接及传输数据的三种方式(蓝牙传输文件、二进制数据)

          先下载InTheHand.Net.Personal.dll并在C#中引用,这个需要在网上下载      先看界面            这种方式优点是稳定性较强,基本无错误,就是偶尔需要提前蓝牙配对。        这种方式直接与蓝牙设备进行配对的时候会报错,请求的地址无效,这时候需要在被检测的蓝牙

    2024年02月11日
    浏览(76)
  • C#,二进制数的按位旋转(Bits Rotate)算法与源代码

    二进制数的按位旋转(翻转)是编程中常见的按位运算方法。 二进制数的按位旋转分为左转、右转。 左转意味着数据变大,右转意味着数据变小(有损)。 using System; using System.Text; using System.Collections; using System.Collections.Generic; namespace Legalsoft.Truffer.Algorithm {     public static

    2024年02月19日
    浏览(41)
  • 修改大型二进制库内部函数名的bash 脚本及其解释

    迭代的方式对于大型二进制库改名字的功能脚本 会将源文件中的函数  add_(...) 修改成 nubia_add_(...) 的方式来调用 此脚本分配来修改,可以避免突破资源限制  ulimit -a; 保存为:redef_func_name_01.sh chmod u+x redef_func_name.sh 如果使能 echo -L \\\"$new\\\" 那么,其中api_symbols=(  )中要写入本

    2024年01月20日
    浏览(41)
  • C#,二进制数的非0位数统计(Bits Count)的算法与源代码

    计算一个十进制数的二进制表示有多少位1? 使用循环按位统计1的个数。 利用一个数组或哈希生成一张表,存储不同二进制编码对应的值为1的二进制位数,那么在使用时,只需要去进行查询,即可在O(1)的时间复杂度内得到结果。 但是,此算法有个弊端,由于算法是采用空间

    2024年02月22日
    浏览(60)
  • 写一个函数返回参数二进制中 1 的个数(c语言三种实现方法)

    (本文旨在自己做题时的总结,我会给出不同的解法,后面如果碰到新的题目还会加入其中,等于是我自己的题库。 方法一: 方法二: 这里说一个方法,任何一个进制数%它的进制位都可以得到它的最低位,任何一个进制数 / 它的进制位都可以将最低位丢弃。比如: 这样我

    2024年02月13日
    浏览(50)
  • C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区)

    本篇文章主要介绍了文本文件和二进制文件,文件读取结束的判定,如何使用函数进行文件的拷贝,文件缓冲区的相关知识。 以及具有保存功能的八功能通讯录的源码。 据数据的组织形式,数据文件被称为文本文件或者二进制文件。 ①数据在内存中以二进制的形式存储,如

    2024年02月08日
    浏览(48)
  • 【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】

    原题链接 本题我们先需要知道 十进制 如何转 二进制 二进制 如何转 十进制 十进制 如何转 二进制: 十进制转成二进制 例如 173 转成 二进制 就把173 短除法 除到0 然后 得到的余数, 从下往上写 二进制 转成 十进制 利用如图方法,把二进制 转成 十进制 本题是高精度,如何

    2023年04月26日
    浏览(50)
  • 将数据转二进制流文件,用PostMan发送二进制流请求

    一、将byte数组转二进制流文件,并保存到本地 byte [] oneshotBytes=new byte[]{78,-29,51,-125,86,-105,56,82,-94,-115,-22,-105,0,-45,-48,-114,27,13,38,45,-24,-15,-13,46,88,-90,-66,-29,52,-23,40,-2,116,2,-115,17,36,15,-84,88,-72,22,-86,41,-90,-19,-58,19,99,-4,-63,29,51,-69,117,-120,121,3,-103,-75,44,64,-58,-34,73,-22,110,-90,92,-35,-18,-128,16,-

    2024年02月15日
    浏览(47)
  • 【Linux操作系统】编译过程中遇到的问题-为什么加-c?执行文件提示无法执行二进制文件?main函数参数argc和*argv[]的作用和理解?

    在使用GCC编译器进行程序开发时,我们经常会遇到一些编译过程中的问题, 比如为什么要加上\\\"-c\\\"选项,以及为什么生成的可执行文件无法执行等问题。 本篇博客将详细介绍这些问题,并给出相应的代码和解释,帮助读者更好地理解GCC编译过程中的\\\"-c\\\"选项和main函数的参数a

    2024年02月12日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包