Powerbuilder10.5 中使用CRC16检验法
CRC16校验法在powerbuilder10.5中的写法。
翻译C语言的数据类型
翻译成pb代码的CRC16算法
global type calccrc from function_object
end typeforward prototypes
global function unsignedinteger calccrc (byte crcbuf, unsignedinteger crc)
end prototypesglobal function unsignedinteger calccrc (byte crcbuf, unsignedinteger crc); byte i;crc = BitEx(crc , crcbuf);for i = 0 to 7byte chk;chk = Bitand(crc, 1);crc = RShift(crc ,1 ) ;crc = Bitand(crc ,32767)// 0x7fff;if (chk = 1) then crc = BitEx(crc,40961) //0xa001;end if crc = Bitand(crc ,65535)// 0xffff;
nextreturn crc;
end function
global type chkcrc from function_object
end typeforward prototypes
global function unsignedinteger chkcrc (byte buf[], unsignedinteger len)
end prototypesglobal function unsignedinteger chkcrc (byte buf[], unsignedinteger len); byte hi, lo; unsignedint i; unsignedint crc;crc = 65535//0xFFFF;for i = 1 to len crc = calccrc(buf[i], crc); next hi = mod(crc , 256);lo = crc / 256;crc = LShift(hi , 8)crc = Bitor(crc, lo) return crc;
end function
编写 测试代码
Byte ly_byte[] = {01, 03, 00, 00, 00, 04}
unsignedinteger iCrc
iCrc = chkcrc(ly_byte,6)BYTE hi,lo
string lsHi,lsLo
lo = Bitand(iCrc,255) //(crc & 0xff);hi = Bitand(RShift(iCrc,8),255) //((crc >> 8) & 0xff);lsHi = ToHex(hi,2)
lsLo = ToHex(lo,2)
测试结果:44 09
Powerbuilder10.5 中使用CRC16检验法相关推荐
- php crc16校验算法,PHP串口通信中计算crc16校验码
最近使用PHP开发串口通信业务,在发送485Modbus命令时,基本都要计算CRC16校验码.网上搜索了很多文章,很多都计算的不对.本文记录搜索到的正确的计算方法. 代码如下:/** * crc16计 ...
- redis中的crc16算法
使用的是循环冗余检验算法. 1.算法原理 假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 ...
- C#编程中的crc16校验
C# CRC16 查表法 private static ushort[] crctab = new ushort[256]{ 0x0000, 0x1021, 0 ...
- ANSI C中的CRC16参考实现
转载地址:https://redis.io/topics/cluster-spec /** Copyright 2001-2010 Georges Menie (www.menie.org)* Cop ...
- php crc16计算,如何在PHP HEX中计算CRC16 CCITT?
我正在尝试使用PHP CRC16 CCITT函数来计算校验和. 设备发送给我一个包含Checksum的PACKET: 10 00 00 00 00 00 00 00 12 51 09 08 00 18 ...
- Redis 集群规范(中文稿)(MOVED错误码及ASK错误码
引言? 这个文档是正在开发中的 Redis 集群功能的规范(specification)文档,文档分为两个部分: 第一部分介绍目前已经在 unstable 分支中实现了的那些功能. 第二部分介绍目前仍 ...
- 【Redis-6.0.8】CRC16
0.阅读 阅读引用1 [Android路上的人]的关于CRC16的说明 Redis-CRC16校验-原理概述 百度百科的CRC 1.初识crc16 CRC循环冗余校验CRC(Cyclic redund ...
- uni-app蓝牙设备连接以及设备的传输,CRC16,ios蓝牙和安卓蓝牙获取数据不一致处理方案
前言: 因为需要开发与蓝牙设备控制相关,但是这不是常用的蓝牙打印,并且是由原生安卓已经做好的,但是需要移植到多平台(小程序 等)都可以使用所以就要移植成 uni-app ,所以这个是按照uni-app ...
- CRC-16原理及通用的16位CRC校验算法代码
CRC-16原理及通用的16位CRC校验算法代码 循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC.它是利用除法及余数的原理来作错误侦测(Error Detect ...
最新文章
- labview的用户身份认证系统设计_elasticsearch 集群身份认证与用户鉴权
- DotNetTextBox V3.0 所见即所得编辑器控件 For Asp.Net2.0(ver 3.0.9Beta)
- Go 语言编程 — Cobra 指令行工具
- golang net/http 超时机制完全手册
- Hadoop-2.2.0学习之二HDFS联盟
- Python编程基础:第三十五节 文件删除Delete a File
- pragma comment的使用 pragma预处理指令详解
- SVN 版本库管理实践
- java 图片合并_Java如何实现图片的叠加与拼接操作
- android 动态绘制布局,Android代码和绘制曲线中按钮和绘图板的动态布局
- 计算机辅助翻译与人工翻译论文,计算机辅助翻译:理念和工具[翻译研究新探论文献文集].pdf...
- 在java中使用solrj对solr进行CRUD
- 拓端tecdat|【数据分享】学生受欢迎程度评价数据集
- 游戏网络编程书籍推荐
- 一项千年太空任务即将拯救人类——科学家们正在密谋中
- 快递面单打印报错:“print selected is not valid” 解决方案
- 阿里云服务器上安装rabbitmq流程
- verilog中tb仿真文件模板
- Myeclipse链接sql server 2005是出现Error while performing database login with the sql2005 driver:
- 教你“如何巧看黑马测试视频,悄悄成为测试高手?”