GJB1188A校验C语言算法

2023-11-13

GJB1188A校验和算法,先将2个字节数据拼接为一个字(16字节),然后循环之后模2算法合成(按位异或,就是^运算符),后再反向移位。

循环右移:消息队列中第一个字不移位,第二个右移1位,第三个右移2位......

按位异或(相同为0,不同为1):消息队列中第1个字与0异或,移位后的第2个字与上次异或运算的结果异或,移位后的第3个字与上次异或运算的结果异或......

最后的结果再循环左移n位,n= 消息队列个数。

例如:4个字消息

第一个字   0000 0000 0000 0001

第二个字   1100 0000 0000 0000

第三个字   0000 1111 0000 0000

第四个字   0001 1110 0000 1011   校验和

unsigned short 1188A_code(unsigned char *data_add, unsigned char len_data)

{

unsigned char i=0,len_word=0;

unsigned short int word[100] = {0x0000};

unsigned short int crc_value=0x0000;

len_word = len_data / 2;

for (i = 0; i < len_word; i++)                            

{

word[i]=(data_add[2*i]<<8)+(data_add[2*i+1]);//两个字节合成一个字

word[i]=word[i]>> (i%16) | word[i]<< (16 - (i%16));//对数据字进行循环移位

crc_value = crc_value ^ word[i];//求循环移位后的校验和字

}

crc_value = (crc_value << (len_word%16)) | (crc_value >> (16-(len_word%16)));//对上个结果进行反向循环移位

return crc_value;

}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GJB1188A校验C语言算法 的相关文章

随机推荐

  • 力扣:287. 寻找重复数

    给定一个包含 n 1 个整数的数组 nums 其数字都在 1 n 范围内 包括 1 和 n 可知至少存在一个重复的整数 假设 nums 只有 一个重复的整数 返回 这个重复的数 你设计的解决方案必须 不修改 数组 nums 且只用常量级 O
  • QT 手动触发一个槽函数

    QT 手动触发一个槽函数 1 使用emit关键字即可 创建一个信号 2 然后在需要的地方使用 就可以了 3 要注意的是 4 自定义界面控件的信号与槽函数 在对ui界面的控件添加槽函数的时候 直接右键添加即可 在构造函数内也不会看到conne
  • phpcms thumb缩略图调用图片失真的解决方法

    thumb 函数用于缩放图片 问题起源于调用方式缺少参数 当原图大小与缩略图比例不一致会出现图片失真错位的问题 其表现形式为 string thumb string imgurl int width 100 int height 100 i
  • Redis系列2-单节点安装

    一 下载压缩包 链接 https pan baidu com s 1IvXq xxZI3YckPHxXFwH9w 提取码 hghj 二 打开master主节点 先拍快照 1 配置阿里云yum源 下载配置文件 wget O etc yum r
  • 【C++入门到精通】C++入门 —— 类和对象(了解类和对象)

    目录 一 类和对象的历史由来 二 面向过程和面向对象的初步认识 三 类 1 引子 2 类的定义 3 类的访问限定符及封装 访问限定符 访问限定符解释说明 struct 与 class 的区别 1 默认访问级别 2 继承权限 默认的继承方式
  • wildfly 配置 pinpoint

    wildfly版本10 pinpoint版本1 8 4 set JAVA OPTS JAVA OPTS Djboss modules system pkgs org jboss logmanager com navercorp pinpoi
  • debian和archlinux下使用fcitx5-rime中州韵输入法之双拼及美化

    1 安装fcitx5和fcitx5 rime 中州韵输入法 apt install fcitx5 fcitx5 rime 2 启用fcitx5 debian用im config im config archlinux用 nano xprof
  • 使用反射技术实现的导入Excel文件到数据库的公共方法

    还是干脆 利索直接上代码最实惠 1 定义接口类IImportService public interface IImportService
  • R语言—随机抽样

    文章目录 专题 随机抽样 简单随机抽样 sample函数 srswor函数 srswr函数 分层抽样 专题 随机抽样 简单随机抽样 从总体中抽取样本的方法很多 最常用的方法是简单随机抽样 简单随机抽样 从容量为N的总体中 任意抽取n个单位作
  • consul学习与常用命令和使用教程

    目录 consul是什么 常用命令 API 实例1 新建服务API 注册服务 查询服务 consul是什么 Consul是分布式的 高可用的 可横向扩展的用于实现分布式系统的服务发现与配置 consul就是提供服务发现的工具 做服务发现的框
  • pyqt5按钮点击时传递参数(通过lambda表达式)

    pyqt5中按钮点击事件的响应 常见的是下面的方式 self btn clicked connet self click method 现在想在按钮click的时候能够传递参数 可以借助lambda表达式 self btn clicked
  • 数字IC手撕代码---百题斩

    前言 本篇导览目录 用来索引笔者写的其他手撕代码文章 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手
  • 线性代数的本质(六)——线性空间

    文章目录 线性空间 线性空间 子空间 坐标与同构 线性变换与矩阵 基变换与坐标变换 线性空间 线性空间 Grant 普适的代价是抽象 仔细分析就会发现 关于向量空间的一切概念及有关定理都不依赖于向量的具体表现形式 有序数组 也不依赖于向量加
  • 17、SysTick—系统定时器

    17 SysTick 系统定时器 文章目录 17 SysTick 系统定时器 1 SysTick简介 2 SysTick寄存器介绍 3 SysTick 定时实验 3 1 硬件设计 3 2 软件设计 本章参考资料 Cortex M3 内核编程
  • 【硬件电子】基础知识点学习记录

    眼图 USB信号质量判断通过下面哪个参数来判断 A 眼图 B 电压 C 信噪比 D 失真度 解析 眼图测试主要是用来检测高速串行传输的信号质量 本题选A 眼图 是由于示波器的余辉作用 将扫描所得的每一个码元波形重叠在一起 从而形成眼图 眼图
  • numa节点间CPU利用率不均衡 - wakeup affinity

    最近遇到服务器numa节点间cpu利用率不均衡 清除sched domain的flags中的AFFINE WAKEUPS标志位是一个优化方法 但是如果直接将AFFINE WAKEUPS关闭 将无法充分利用L2 L3 cache缓存命中带来的
  • JMeter软件的安装(超详细教程)

    JMeter软件的安装 超详细教程 1 jdk的安装 1 1jdk的环境变量配置 2 JMeter的安装 1 1JMeter的环境变量配置 3 JMeter的运行 第一个问题 为什么下载JMeter要先下载jdk 因为JMeter是Apac
  • 数据库还原-bak文件

    数据库还原 我知道有俩种方式 一种方式是直接在数据库上操作 一种是在数据库里用代码还原 第一种方法 1 数据库上右击 选择还原文件和文件组 2 选择目标数据库 选择bak文件 确定即可还原数据库 一般情况下这样就可以还原数据库了 但有时会报
  • nginx报错:./configure: error: C compiler cc is not found, gcc 是已经安装了的

    源码安装nginx报错 找不到gcc 但是实际上gcc是存在的 如下 configure checking for OS Linux 3 10 0 957 el7 x86 64 x86 64 checking for C compiler
  • GJB1188A校验C语言算法

    GJB1188A校验和算法 先将2个字节数据拼接为一个字 16字节 然后循环右移 之后模2算法合成 按位异或 就是 运算符 最后再反向移位 循环右移 消息队列中第一个字不移位 第二个右移1位 第三个右移2位 按位异或 相同为0 不同为1 消