检验和算法

常用的简单校验算法:校验和,异或校验,crc校验,LRC校验,补码求和,checksum 常用的简单校验算法:校验和,异或校验,crc校验,LRC校验,补码求和,checksum 相关思路和源码来自网络,自己只是整理, 做笔记用。 并未完整完善正确归纳,只是个人理解初步做笔记记录。 在实现业务需求过程中,通常要用到相关一些校验算法,简单整理常用校验算法并做笔记: 常用校验算法简单说明: 1:校验和:按每个字节,计算累加和, 2:异或校验:定义初值,按每个字节异或,求结果。 3:CRC校验:已有很多的标准及计算方式,可以返回8字节,16字节,32字节的结果。 受益匪浅的文章:https://blo 阅读详情


1、CRC(循环冗余码)

  校验和的算法为:
      所有各字节的和模256的余。即各字节二进制算术和,不计超过256的溢出值(即只取其和
  的低8位数据),然后用0x100减去这个算数累加和,得出得值就是此行得校验和。
  例如:(16进制数)  10 00 10 00 18 F0 9F E5 80 5F 20 B9 F0 FF 1F E5 18 F0 9F E5。
        这串数据的CRC校验和为:
       byte checksum=10+00+10+00+18+F0+9F+E5+80+5F+20+B9+F0+FF+1F+E5+18+F0+9F+E5;

            checksum=0x100-checksum;(结果为0x1D);


 2、奇偶校验法

      大家都知道,信息是以比特流的方式传输的,类似01000001。在传输过程中,有可能会发生错误,比如,我们存储了01000001,但是取出来却是01000000,即低位由0变成了1。为了检测到这种错误,我们可以通过“奇偶校验”来实现。假如,我们存储的数据是一个字节,8个比特位,那我们就可以计算每个字节比特位是1的个数,如果是偶数个1,那么,我们就把第九个位设为1,如果是奇数个1,那么就把第九个位设为0,这样连续9个字节比特位为1的位数肯定是奇数。这中方法叫做“奇校验”,“偶校验”和此类似。当然,在实际应用中,也可以把一个字节的前7位作为数据位,最后一个为作为校验位。


3、CRC16的算法
   也是求余,但还没有搞清楚,只验证了它的程序,如下
   word CalculateCRC16(uchar* ptr, uchar len){
   uchar i;  
   word crc=0xffff;  //CRC的初始值,值不同则结果也不同,看具体要求
    while(len--)
    {
        for(i=0x80; i!=0; i>>=1)
        {
          if((crc&0x8000)!=0)
          {crc<<=1; crc^=0x1021;}  //0x1021表示其中的CCITT值,此值可能不同
          else crc<<=1;
          
          if((*ptr&i)!=0)
          crc^=0x1021;
        }
        ptr++;
    }
    return(crc);

}


如上程序,如果CRC初始值为0xffff;CCITT=0x1021。求数组byte RcvSCIData_Buf[LEN]={0xab,0x02,0x04,0xcc,0x00}的CRC值为0xb506。
848-UDP 检验和 的计算过程 UDP 检验和 的计算过程 对发送方的 UDP 报文段的所有 16 比特字的和进行反码运算,当求和遇见溢出的时候,进行回卷(回卷的补充在下面),得到的结果放在 UDP 报文段中的检验和字段。 什么是回卷? 所谓 “回卷” 就是当进行 16 比特的加法运算的时候,如果进位到 17位,则将第 17 位和后 16 位进行加法和运算。 举个例子 假设我们有 3 个 16 比特的字,分别如下 0110011001100000 0101010101010101 1000111100001100 第一步:对 3 个 1 阅读详情

相关推荐

【进制字符串的处理】校验和(Checksum)计算

本题考察字符串与十六进制数的转换及补齐处理。给定一个十六进制字符串,每两字符表示一个字节,需补足至 4 字节的倍数(即每 8 个字符为一组)。若组数为 1,则直接输出补齐后的值;若超过 1 组,则将每组转为 32 位整数并依次进行异或(XOR)操作,最终结果即为校验和。输出需固定为 8 位大写十六进制字符串。该问题可通过分组 + int 异或简洁实现。

qq_42889517的博客 603

校验和计算方法

1.说明:   [1]校验和覆盖的内容:     IP校验和:IP首部。     ICMP校验和:ICMP首部+ICMP数据;     UDP、TCP校验和:首部+数据+12个字节伪首部(源IP地址、目的IP地址、协议、TCP/UDP包长)。 2.计算校验和的步骤:   [1]把校验和字段设置为0。   [2]把需要校验的数据看成以16位为单位的数字组成,依次进行二进制反码求和。 ...

Pei_hua100的专栏 1万+

按模256代码

很多协议中采用的cs校验 也就是按模校验,根据给出的字符串计算出该字符串的模256的值

校验和的计算方法

实验要求 编写一个计算机程序用来计算一个文件的16位效验和。最快速的方法是用一个32位的整数来存放这个和。记住要处理进位(例如,超过16位的那些位),把它们加到效验和中。 要求: 1)以命令行形式运行:check_sum infile 其中check_sum为程序名,infile为输入数据文件名。 2)输出:数据文件的效验和 附:效验和(checksum) 参见RFC1071 - Computin...

Samven_7的博客 2万+

西工大noj100题python2024第一季1-10

【代码】西工大noj100题python2024第一季1-10。

weixin_70523540的博客 1800

企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程

本文详细介绍了企业微信群机器人Webhook的配置流程,从创建机器人到获取Webhook地址,再到发送各类消息的完整步骤。通过Python代码示例展示了文本、Markdown等消息类型的发送方法,并提供了性能优化建议和常见问题排查技巧,帮助企业高效实现自动化消息推送。

weixin_29208327的博客 6845

IP 首部检验和算法

原创博文,转载请注明出处。 在学习TCP/IP 详解的过程中遇到了不止一次的关于检验和的概念,在吸取了他人理解的前提下,我决定用Wireshark 进行抓包分析。 首先我们得知道IP数据包格式 首先把检验和字段置为 0 。然后,对首部中每个 16 bit进行二进制反码求和(整个首部看成是由一串 16 bit的字组成),结果存在检验和字段中。当收到一份I P数据报后,同样对首部...

dfgoo42400的专栏 474

字节开源 DeerFlow 2.0:从 Deep Research 到 Super Agent Harness 的进化之路

GitHub Trending 冠军项目,字节跳动完全开源的超级智能体框架。支持子代理、沙箱执行、长期记忆、技能扩展,可完成从几分钟到几小时的复杂任务。本文深度解析架构设计、安装实战、技能系统,并附上独家配置指南。

qq_38610923的博客 1713

ip检验和算法分析与实现

 为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样首部中每个16bit进行反码求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因为如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是1(即检验和错误),那么IP

tge7618291的专栏 2906

scanpy单细胞转录组python教程(四):单样本数据分析之降维聚类及细胞注释

本文介绍了使用scanpy进行单细胞转录组分析的降维聚类和细胞注释流程。首先通过PCA降维并可视化主成分贡献,然后使用不同分辨率参数(0.2-1.0)进行Leiden聚类。通过Wilcoxon检验鉴定marker基因,并基于经典marker基因手动注释细胞类型。最后对低质量细胞群进行过滤,并重新计算邻居图和UMAP可视化。流程中包含PCA方差分析、多分辨率聚类比较、marker基因筛选和基于UMAP的细胞类型可视化等关键步骤,为后续分析奠定基础。

qq_42090739的博客 943

《网络摄像机实战⑦:嵌入式端AWS KVS IoT SDK 库编译与测试全流程-君正/瑞芯微/全志(超详细指南)》

本文介绍了AWS音视频和物联网解决方案的核心组件与集成方法。主要内容包括:1)Amazon Kinesis Video Streams(KVS)提供的WebRTC托管服务,支持实时音视频流传输与双向交互;2)AWS IoT云服务实现设备连接与集成;3)详细说明了KVS WebRTC库的编译过程,包括源代码下载、CMake配置和依赖库生成;4)KVS Producer库的集成方法,重点阐述了存储空间调整和mbedtls版本适配等关键修改点。文章为开发者提供了AWS音视频和物联网服务的技术实现指南,特别针对嵌入

lvj_158的专栏 109

ip首部检验和算法

最近在书中看到多次ip检验和算法,就找度娘问了一下,结果给出的答案也都大差不离,但是自己也不是很明白,就决定自己亲自实践计算一下,彻底的搞明白。工具:wireshark下面是ip首部的结构经过抓包后得到下图从图中可以看出,ip首部的各种数据格式解释如下:版本号4,占了4位,表示ipv4.接下来是包头长度,又占了4位,指明ipv4协议包头长度的字节数包含多少个32位。由于IPv4的包头可能包含可变数...

weixin_30693683的博客 439

SST专题(2-4)MMC-SST 输入级的环流分析

本文分析了模块化多电平换流器(iMMC-SST)的输入级等效电路、子模块电容电压波动特性及环流抑制机理。研究表明:1)子模块电容电压波动包含基频和二倍频分量,与传统换流器相比波动幅值更大;2)环流主要由子模块电容电压波动在桥臂电感上激发的偶次谐波电流构成,呈频率越高幅值越小的特性;3)可通过增大桥臂电感或采用调制策略叠加抑制电压分量来有效控制环流。研究结果为MMC系统设计提供了理论依据。

嵌入式老牛的博客 585

【TCP/IP】检验和算法

在巨著《TCP/IP详解1》中有这样一句话:“ICMP,IGMP,UDP and TCP all use the same checksum algorithm”。的确,检验和算法在TCP/IP协议族中大同小异。其过程大致都是:接收方通过判断检验和是否一致,进一步判断该数据包头部传输过程中是否丢失或者被污染了。本文将以IP协议首部(见下图)为例简单介绍检验和算法:       

This is bill的专属博客 2839

Xilinx ISE系列教程(2):LED点灯工程、仿真、bit下载和mcs固化

bit流生成配置选项很多,支持生成bit/bin/ascii格式的bin文件,是否压缩,配置速度,配置管脚的上下拉,用户ID,数据加载速度,SPI总线宽度,是否支持Readback,程序加密等等。,在之后的文章,我们会以Xilinx Spartan-6系列FPGA XC6SLX16为例,不涉及FPGA开发知识,仅仅是工具的使用,介绍Xilinx ISE开发环境的使用教程和使用技巧。bit文件下载之后,可以看到LED按照我们设计的1s周期闪烁起来了,但是此时如果断电,重新上电程序就丢失了。...

whik1194的博客 2281

第78章:PCL Multiple View ICP 多视角配准

多视角配准(Multiple View ICP)是迭代最近点(ICP)算法的扩展,旨在处理多视角的点云数据配准问题。传统的ICP算法主要用于两幅点云之间的配准,而多视角配准则处理来自多个视角或不同时间采集的多个点云数据的配准任务。在实际应用中,多个传感器或多个拍摄角度获得的点云数据常常需要进行联合配准。这些点云可能由于不同的视角、拍摄位置或时间差异而存在位置和旋转的差异。多视角配准的目标是根据多个点云之间的匹配关系,找到它们的相对变换,使得这些点云能够合并成一个统一的三维模型。

yumeiguo的博客 158

Internet检验和(UDP检验和)的正确算法

在学习计算机网络的时候,遇上了一个麻烦,就是 如何求Internet检验和 话不多说,摆上例题 设有三个 16 比特字: 0110011001100000,0101010101010101,1000111100001100。 试计算它们的 Internet 校验和。 首先我们应该先两两相加,采用二进制算法(0和1相加为1,1和1相加为0并向前进一位) 0110 0110 0110 0000 +0101 0101 0101 0101 101

m0_48426019的博客 7693

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

检验和算法所用的反码与补码的不同

大部分计算机使用的都是补码(twocomplement)体系,这种体系中最高位即符号位产生的进位会被丢弃,如1100(-4)+1111(-1)=1011(-5);这种算法取反后加1相当于对十进制数取相反数,取反相当于取相反数减1,即~x=-x-1。 而IP数据报与UDP数据报检验和的算法采用反码体系(onecomplement),这种体系中最高位产生的进位会加给最低位,如111...

weixin_30687587的博客 215

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【无标题】Internet检验和(UDP检验和)的正确算法

不难看出,这种简单的差错简单检验能力并不强,但它的好处是简单,处理起来较快。希望这篇文章能够帮助到计算检验和有困难的你。

weixin_45672615的博客 197

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Luhn算法检验和验证

一、Luhn公式介绍 Luhn公式是一种广泛使用的系统,用于对标识号进行验证。它根据原始标识号,把每隔一个数字的值扩大一倍。然后把各个单独数字的值加在一起(如果扩大一倍后的值为2个数字,就把这两个数字分别相加)。如果相加之后可以被10整除,那么这个标识号就是合法的。 编写一个程序,接受一个任意长度的标识号,并根据Luhn公式确定这个标识号是否合法。这个程序在读取下一个字符之前必须处理...

456

IP首部及检验和算法

用microsoft network monitor抓取一个帧包如下:                0000:   00 1E BE 73 DF 00 00 15 58 E9 8C AD                 000c:  08 00 45 00 00 40 7B AD 40 00 80 32                 0018:   19 F2 AC 12 06 60 9D

lastlike的专栏 2227

Internet checksum 因特网检验和的算法

(1) Adjacent octets to be checksummed are paired to form 16-bit integers, and the 1’s complement sum of these 16-bit integers is formed.(2) To generate a checksum, the checksum field itself is cleared,

南京大学的CS渣 1万+
上一篇: sleep(0)的作用
下一篇: vc中异常捕捉的最后一道屏障-SetUnhandledExceptionFilter
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值