delphi bcc校验 程序
发布网友
发布时间:2022-05-06 11:10
我来回答
共1个回答
热心网友
时间:2022-06-29 20:30
异或校验算法(又称为BCC校验)0
常见的校验方法有:奇偶校验、循环冗余校验CRC、异或校验、校验和、汉明校验
搞了半天,异或校验就是偶校验
下面就是异或校验的算法,多用于串口通信。其它校验方法以后用到再研究吧!
#include "stdio.h"
void main()
{
int i;
//任意10个数值,也可以不是8位
unsigned char data[10]={0x12,0x21,0x1A,0xB1,0xC1,0xEB,0xDF,0xCA,0xF6,0xDD};
unsigned char out;//用于保存异或结果
out=0x00;
for (i=0;i<sizeof(data);i++)
{
out^=data;
}
printf("原来的校验值:%X\n",out);
out^=(data[0]^0xee);//将data[0]改为新数据后计算新校验和的方法
out^=(data[5]^0x20);//将data[5]改为新数据后计算新校验和的方法
printf("修改后校验值:%X\n",out);
data[0]=0xee; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
data[5]=0x20; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
out=0x00;
for (i=0;i<10;i++)
{
out^=data;
}
printf("原始方法得出校验值:%X\n",out);
}
例如:判断$与*之间的异或是不是4C
$GPGGA,085014.955,2839.2050,N,11549.5721,E,1,04,03.6,76.6,M,-6.2,M,,*4C
怎么计算啊
#include <stdio.h>
void main ()
{
char a[]="$GPGGA,085014.955,2839.2050,N,11549.5721,E,1,04,03.6,76.6,M,-6.2,M,,*4C";
int i,result;
for(result=a[1],i=2;a[i]!='*';i++)
{
result^=a[i];
}
printf("result = %x\n",result);
}