BCC异或校验及BCC在Matlab中的实现
BCC异或校验及BCC在Matlab中的实现
- BCC异或校验算法
- BCC异或校验算法的MATLAB实现
- 总结
BCC异或校验算法
BCC异或校验算法较常用于数据包发送中校验位的计算,其方法是依次对前面的每个数进行按位异或,然后组合成一个新的数作为下一个字节的数据。
这里举例说明:
要发送的数据包如下:
24 5F 61
注意:这三个数都是16进制的,即每个数占用1字节;即为0x24, 0x5F, 0x61;
下一字节数据为前三个字节数据BCC校验位
首先将这三个数转变为二进制
24: 0010 0100
5F: 0101 1111
61: 0110 0001
首先对24和5F进行按位异或计算:
0010 0100
0101 1111
—————
0111 1011
之后再与61进行按位异或计算:
0111 1011
0110 0001
—————
0001 1010
故最后这三个16进制一字节的数据的异或校验位为1A。
BCC异或校验算法的MATLAB实现
Matlab中并没有现成的BCC算法的函数,且网上并没有找到BCC算法的Matlab实现,于是尝试自己编写,在编写中发现主要涉及进制转换和数据类型转换,故在这里记录下来,直接放出函数:
function [ outputDec ] = BCC( inputDec )
%UNTITLED 此处显示有关此函数的摘要
% 此处显示详细说明
%进行BCC异或校验
%输入为16进制字符串
%输出为1字节16进制
inputDec1=inputDec(:,1);
inputDec2=inputDec(:,2);
tempNum=uint8(dec2bin(hex2dec(inputDec1(1)),4)); %将第一个数赋值给tempNum
for i=1:(length(inputDec1)-1)tempNum=bitxor(tempNum,uint8(dec2bin(hex2dec(inputDec1(i+1)),4))); %与下一个16进制数值异或
end
if mod(length(inputDec1), 2) ~= 0tempNum=char(tempNum);
elsetempNum=num2str(tempNum);
end
hex1=dec2hex(bin2dec(tempNum)); %获得16进制数高位tempNum=uint8(dec2bin(hex2dec(inputDec2(1)),4)); %将第一个数赋值给tempNum
for i=1:(length(inputDec2)-1)tempNum=bitxor(tempNum,uint8(dec2bin(hex2dec(inputDec2(i+1)),4))); %与下一个16进制数值异或
end
if mod(length(inputDec2), 2) ~= 0tempNum=char(tempNum);
elsetempNum=num2str(tempNum);
end
hex2=dec2hex(bin2dec(tempNum)); %获得16进制数低位outputDec=[hex1 hex2];%将高低位合并输出
使用该函数时,输入为如下格式:
input=[‘24’;‘5F’;‘61’]
BCCoutput=BCC(input);
可以得到结果输出为1A,如下:
总结
虽然目前有很多现成的校验位计算器,但是当要发送的数据不是定值时,仍然需要通过函数对校验位进行计算,以上主要为大家提供一个在Matlab环境下可用的BCC校验位计算函数。
BCC异或校验及BCC在Matlab中的实现相关推荐
- BCC异或校验 Linux C
1.BCC异或校验 从输入的HEX第一个字节开始,按字节依次循环计算异或值直到HEX结尾字节,得到的最终一个字节值. 2.C程序 /********************************** ...
- 【Python】快速实现BCC (异或)校验的计算
项目场景: 例如:数据的处理合格校验的过程中,出现需要(异或)校验的情况,这边只会python 脚本,那就快速来完成并记录一下吧 BCC(Block Check Character/信息组校验码),因 ...
- 【JavaScript】硬件通讯数据校验 BCC异或校验生成 按位取反 十六进制数据格式化
十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的[进位制].通常用数字0.1.2.3.4.5.6.7.8.9和字母A.B.C.D.E.F(a.b.c.d.e.f)表示, ...
- Java 进行BCC异或校验
功能是将传进去的一组十六进制字符串,将其转换成十六进制的异或值 如: hex 31353738 return 1578 public static String getBCC(String hex) ...
- 异或校验算法 c语言程序,C# 异或校验算法
C# 的异或校验算法 直接上代码 public partial class FormCRC : Form { public FormCRC() { InitializeComponent(); } p ...
- matlab实现BCC异或,C#编程之C# BCC异或校验法
本文主要向大家介绍了C#编程之C# BCC异或校验法,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. 通讯协议中最后一位是校验位 采用BCC(异或校验)法 这个怎么解释? 就是 把16进制 ...
- BCC校验(异或校验)原理
BCC校验(异或校验)原理 BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验.具体算法是:将每一个字节的数据(一般是每两个16进制的字符 ...
- DSP学习--BCC校验(异或校验)
检验值(LRC) Data 部分数据各字节异或值. 参看:BCC校验(异或校验)在线计算 #include <stdio.h> #include <string.h> #inc ...
- BCC校验(异或校验)在线计算
BCC校验(异或校验)在线计算 http://www.ip33.com/bcc.html
最新文章
- python PyQt5.QtWidgets.QApplication().exec_()函数 QCoreApplication.exec_()(进入主事件循环并等待直到调用exit()为止)
- JDK12的新特性:teeing collectors
- android content provider线程安全,Android ContentProvider的线程安全(二)
- php pdf添加水印图片,php pdf添加水印(中文水印,图片水印)
- 126套Unity3D视频教程全集(包含入门、编程、特效、UI、动画、实战等等)
- Android系统韦根调试从驱动到应用(一)
- 大学计算机基础知识电子版,(完整版)大一大学计算机基础课程知识点.pdf
- 2019年计算机操作系统考研真题
- Java 编写一个类Letter,要求该类创建对象p,并调用方法printLetter输出英文字母表。
- 无法访问该文件可能已损坏 或者服务器,win7系统打开xls文件提示无法访问文件可能损坏的解决方法...
- selenium3 设置浏览器安装的位置
- 追求技术之美:云计算开发者的自我修养
- linux好几百g空间使用,linux磁盘空间被占用100%-148
- zabbix结合qqmail发送告警信息
- 基于微信小程序的自来水收费系统设计与实现-计算机毕业设计源码+LW文档
- 抽样调查理论与方法期末复习笔记
- sd卡怎么恢复数据?sd卡照片恢复,只需1个方法就能做到?
- 每天读一点好玩心理学--心理学
- 如何保证申请内存的地址是4的倍数
- Python中的sort()使用方法
热门文章
- 第一次机房收费系统总结
- 一个巨型的ESP8266模块,围观围观
- 【数分书单】分析思维《一本小小的蓝色逻辑书》第四章小结
- 在IOS上YUV NV21格式的CVPixelBufferRef转opencv的RGB格式cv::Mat的方法
- firefly的RK3399AIOC开发板+海康工业相机抓图预览
- Sony xperia xz1compact - 重刷固件ROM和解锁ROOT教程
- 数据模型与数据库之间的关系
- 「学习笔记」移动Web开发之flex布局9
- dell一键还原出厂设置(dell一键还原出厂设置找不到恢复环境)
- FFT算法再学以及终于理解