xor异或校验(求一个VB编的串口通讯用的异或XOR校验程序(或函数))

本文目录
- 求一个VB编的串口通讯用的异或XOR校验程序(或函数)
- 请问异或取反校验是什么教研方式,具体方法是什么
- 请问什么是异或校验
- c# VS求异或校验和的问题
- RAID 5的校验
- 异或( xor)是什么意思啊
- 和校验异或校验哪个更好
求一个VB编的串口通讯用的异或XOR校验程序(或函数)
Private Sub cmdSendHex_Click() ’16进制发送
Dim sj() As Byte
Dim sj_Txt As String
Dim i As Integer
sj_Txt = TxtSend
If Len(TxtSend) Mod 2 = 0 And Len(TxtSend) 《》 0 Then ’检验16进制字符串长
ReDim sj(Len(sj_Txt) / 2 - 1)
For i = 0 To Len(sj_Txt) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2))
Next
Print Hex(sj(0) Xor sj(1) Xor sj(2))
Else
MsgBox ("格式不对!")
End If
Text1 = TxtSend & Right("0" & Hex(sj(0) Xor sj(1) Xor sj(2)), 2)
End Sub
Private Sub Form_Load()
TxtSend = "010308"
***隐藏网址***
请问异或取反校验是什么教研方式,具体方法是什么
xor异或运算公式
1、逻辑加法(“或”运算)
逻辑加法通常用符号“+”或“∨”来表示。逻辑加法运算规则如下:
0+0=0, 0∨0=0
0+1=1, 0∨1=1
1+0=1, 1∨0=1
1+1=1, 1∨1=1
从上式可见,逻辑加法有“或”的意义。也就是说,在给定的逻辑变量中,A或B只要有一个为1,其逻辑加的结果为1;两者都为1则逻辑加为1。
2、逻辑乘法(“与”运算)
逻辑乘法通常用符号“×”或“∧”或“·”来表示。逻辑乘法运算规则如下:
0×0=0, 0∧0=0, 0·0=0
0×1=0, 0∧1=0, 0·1=0
1×0=0, 1∧0=0, 1·0=0
1×1=1, 1∧1=1, 1·1=1
不难看出,逻辑乘法有“与”的意义。它表示只当参与运算的逻辑变量都同时取值为1时,其逻辑乘积才等于1。
3、逻辑否定(非运算)
逻辑非运算又称逻辑否运算。其运算规则为:
0=1 非0等于1
1=0 非1等于0
4、异或逻辑运算(半加运算)
异或运算通常用符号"⊕"表示,其运算规则为:
0⊕0=0 0同0异或,结果为0
0⊕1=1 0同1异或,结果为1
1⊕0=1 1同0异或,结果为1
1⊕1=0 1同1异或,结果为0
即两个逻辑变量相异,输出才为1
异或校验算法(又称为BCC校验)
常见的校验方法有:奇偶校验、循环冗余校验CRC、异或校验、校验和、汉明校验
搞了半天,异或校验就是偶校验
下面就是异或校验的算法,多用于串口通信。其它校验方法以后用到再研究吧!
#include "stdio.h"
void main()
{
int i;
//任意10个数值,也可以不是8位
unsigned char data={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改为新数据后计算新校验和的方法
out^=(data改为新数据后计算新校验和的方法
printf("修改后校验值:%X\n",out);
data=0xee; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
data=0x20; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
out=0x00;
for (i=0;i《10;i++)
{
out^=data;
}
printf("原始方法得出校验值:%X\n",out);
}
请问什么是异或校验
异或校验算法(又称为BCC校验)
下面就是异或校验的算法,多用于串口通信:
#include "stdio.h"
void main()
{
int i;
//任意10个数值,也可以不是8位
unsigned char data={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改为新数据后计算新校验和的方法
out^=(data改为新数据后计算新校验和的方法
printf("修改后校验值:%X\n",out);
data=0xee; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
data=0x20; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
out=0x00;
for (i=0;i《10;i++)
{
out^=data;
}
printf("原始方法得出校验值:%X\n",out);
}
作用:
防止自己的程序被篡改。
有些可执行程序,当被改了资源时再运行会有文件已损坏的提示,这就是使用了数据校验。本例是用md5做为数据校验的算法。当然你可以使用个性化的比如des作为数字签名,那样安全性更高。
扩展资料:
最简单的检验
实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。
应用例子:龙珠cpu在线调试工具bbug.exe。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。
奇偶校验Parity Check
实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。
应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。
md5校验和数字签名
实现方法:主要有md5和des算法。
适用范围:数据比较大或要求比较高的场合。如md5用于大量数据、文件校验,des用于保
密数据的校验(数字签名)等等。
应用例子:文件校验、银行系统的交易数据
参考资料:百度百科-数据校验
c# VS求异或校验和的问题
1)Encoding.ASCII.GetBytes(……)得到字节数组,数组中的每个元素在计算机内部都是以二进制格式存储的(其实计算机内存中所有类型的数据都是以二进制格式存储的!)
2)可以用10进制、16进制来表达或输出这些二进制数据
3)C#的异或操作是基于二进制按位操作
-----
不知道你XOR校验和的具体算法规定。
以下是在通信过程中,用XOR求校验和最常用方法:
// s是待校验数据(字符串)
string s = "abcdef";
//获取s对应的字节数组
byte b = Encoding.ASCII.GetBytes(s);
// xorResult 存放校验结果。注意:初值去首元素值!
byte xorResult = b;
// 求xor校验和。注意:XOR运算从第二元素开始
for(int i=1; i《b.Length; i++)
{
xorResult ^= b;
}
// 运算后,xorResult就是XOR校验和的结果!
RAID 5的校验
RAID5校验位算法原理
P=D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn为数据块,P为校验,xor为异或运算)
XOR(Exclusive OR)的校验原理如下表: A值 B值 Xor结果 0 0 0 1 0 1 0 1 1 1 1 0 这里的A与B值就代表了两个位,从中可以发现,A与B一样时,XOR结果为0,A与B不一样时,XOR结果就是1,而且知道XOR结果和A与B中的任何一个数值,就可以反推出另一个数值。比如A为1,XOR结果为1,那么B肯定为0,如果XOR结果为0,那么B肯定为1。这就是XOR编码与校验的基本原理。
异或( xor)是什么意思啊
1、异或(xor)是一个数学运算符。它应用于逻辑运算。
2、异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
3、如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
4、逻辑异或运算简称异或。英文为exclusive OR,或缩写成xor。
5、异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。
扩展资料
一、运算法则
1、a ⊕ a = 0
2、a ⊕ b = b ⊕ a
3、a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;
4、d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.
5、a ⊕ b ⊕ a = b
二、逻辑表达式:F=AB’⊕A’B((AB’⊕A’B)’=AB⊙A’B’,⊙为“同或”运算)
和校验异或校验哪个更好
和校验好。
和校验又称累加和校验。和校验按每个字节,计算累加和。异或校验定义初值,按每个字节异或,求结果。异或校验又称异或和校验或者BCC校验。BCCcheck是比较常用的串口数据校验。检验和的概念一般体现在8bit长度的字符数组。注意异或校验是异或运算,需要先强制把字符转换成整形数据。
校验,是一个数学术语,是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。分析国内外对校验的用法,其含意基本相同,它与检定和校准均有一定联系又有明显区别。它不具有法制性与校准相同,它在技术操作内容上又与检定有共性,一般可进行校准,也可以对其它有关性能进行规定的检验,并最终给出合格性的结论。这一术语有时是很必要的,建议在有关术语定义中应当给校验一个正式的位置,以统一和规范其使用。

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40







