delphi crc校验函数
function CalCRC16(AData: array of Byte; AStart, AEnd: Integer): string;
const
GENP=$8408; //多项式公式X16+X15+X2+1(1100 0000 0000 0101) //$A001
var
crc:Word;
i:Integer;
tmp:Byte;
s:string;
procedure CalOneByte(AByte:Byte); //计算1个字节的校验码
var
j:Integer;
begin
crc:=crc xor AByte; //将数据与CRC寄存器的低8位进行异或
for j:=0 to 7 do //对每一位进行校验
begin
tmp:=crc and 1; //取出最低位
crc:=crc shr 1; //寄存器向右移一位
crc:=crc and $7FFF; //将最高位置0
if tmp=1 then //检测移出的位,如果为1,那么与多项式异或
crc:=crc xor GENP;
crc:=crc and $FFFF;
end;
end;
begin
crc:=$FFFF; //将余数设定为FFFF
for i:=AStart to AEnd do //对每一个字节进行校验
CalOneByte(AData[i]);
s:=inttohex(crc,2);
Result:= rightstr(s,2)+leftstr(s,2);
end;
转换函数
function TForm1.strtocrc(s: string): string;
var
buf1:array[0..256] of byte;
i:integer;
strOrder:string;
Res: string;
begin
strOrder :=StringReplace(s,' ','',[rfReplaceAll]);
for i:=0 to (length(strOrder) div 2-1) do
buf1[i]:= HexToInt1(copy(strOrder, i*2 + 1,2));
result:=s+CalCRC16(buf1,Low(buf1),length(strOrder) div 2-1);
end;
delphi crc校验函数的更多相关文章
- 协议栈中使用crc校验函数
CRC校验介绍:循环冗余校验码,原理是多项式除法 ZigBee协议栈:能够使zigbee节点相互之间组网,数据传输,数据获取,数据显示 思路以及步骤: 1.因为IAR的程序是用c写的,所以上网查找如何 ...
- 物联网平台设计心得:你所不知道的CRC校验
在物联网平台设计过程中,我的中间件一方面需要处理来自于硬件端的包,另一方面需要处理来自于用户端的包,用户端包括web端和手机端等等.所以编写一个统一的CRC认证是非常必须要. 那么,在设计开始,CRC ...
- CRC校验源码分析
这两天做项目,需要用到 CRC 校验.以前没搞过这东东,以为挺简单的.结果看看别人提供的汇编源程序,居然看不懂.花了两天时间研究了一下 CRC 校验,希望我写的这点东西能够帮助和我有同样困惑的朋友节省 ...
- Delphi 常用API 函数
Delphi 常用API 函数 AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeIconic ...
- 字符串CRC校验
字符串CRC校验 <pre name="code" class="python"><span style="font-family: ...
- 16位CRC校验_Delphi
unit Modbus_main; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, G ...
- CRC校验的实现
本例提供的是通过查表发来实现CRC校验. CRC余式表如下: unsigned int crctab[256] ={/*CRC余式表 */ 0x0000, 0x1021, 0x2042, 0x3063 ...
- Delphi CRC16校验算法实现(转)
循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC.它是利用除法及余数的原理来作错误侦测(Error Detecting)的.实际应用时,发送装置计算出CRC值并随 ...
- CRC校验算法学习
原文:http://www.repairfaq.org/filipg/LINK/F_crc_v31.html 本文根据上述链接原文翻译而来,如有错误,忘广大网友互相帮忙纠正,谢谢! 1.前言: 1.0 ...
随机推荐
- 台州学院we are without brain 训练 后缀数组
sa[i]表示排名为 i 的后缀的第一个字符在原串中的位置 rank[i]表示按照从小到大排名 以i为下标开始的后缀的排名 height[i]表示排名为 i 和排名为 i+1的后缀的最长公共前缀的长 ...
- HDU 4436 str2int (后缀自动机)
把所有的字符串连接起来,中间用一个未出现的字符分隔开,题意是求这个串的所有子串(中间不含分隔符)形成的数之和. 把这个串加入SAM,对所有子串进行拓扑排序,从前往后统计. 记录到达这个节点的路径个数c ...
- .NET Framework中的过时类型
文章:.NET Framework 中的过时类型 url地址:https://docs.microsoft.com/zh-cn/dotnet/framework/whats-new/obsolete- ...
- 第二章 Internet 地址结构
注意: 这个系列的博客只是为了巩固我学习的知识,参考的价值不是很大,如果需要,请转到http://www.cnblogs.com/ZCplayground/p/7764436.html Interne ...
- python3.6操作mysql
1.通过 pip 安装 pymysql 进入 cmd 输入 pip install pymysql 回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...
- BZOJ5154 [Tjoi2014]匹配 【KM算法 + 枚举】
题目链接 BZOJ5154 题解 先跑出一个匹配方案 然后暴力删去每对匹配再检验一下答案是否减小 使用KM算法提升速度 #include<algorithm> #include<io ...
- gcc 编译器常用的命令行参数一览
这些常用的 gcc/g++ 命令行参数,你都知道么? 1. gcc -E source_file.c -E,只执行到预编译.直接输出预编译结果. 2. gcc -S source_file.c -S, ...
- 算法复习———dijkstra求次短路(poj3255)
题目: Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her ...
- spring3创建RESTFul Web Service
spring 3支持创建RESTFul Web Service,使用起来非常简单.不外乎一个@ResponseBody的问题. 例如:后台controller: 做一个JSP页面,使用ajax获取数据 ...
- bzoj1861 [Zjoi2006]Book 书架 splay
小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本.由于这些书太有吸引 ...