chksum:=0;
for i:=1 to MReceiveBufferLength-1 do
chksum:=chksum xor Buffer[i-1];异或让我头晕。
for i:=1 to MReceiveBufferLength-1 do
chksum:=chksum xor Buffer[i-1];异或让我头晕。
解决方案 »
- 2个表多字段查询问题
- 大虾们帮帮忙 ShellTreeView ShellListView 拖动问题 在线等。。
- GetTickCount函数的功能是什么?
- 那里有编写漂亮按钮的控件或者源码下载
- 谁帮我把这个翻译成delphi的呀!我急需 ...
- delphi中如何使用.rc文件?
- /**一个有关turbo pascal 的问题,会者不难**/
- HELP,谁能解决问题?
- 怎么对多个数据库进行SQL语句查询?Delphi6+SQL2000 ---急!!!
- Bpl包的调用问题,盼望解答!
- activex里的windowsmediaplayer控件很占内存怎么办。
- stringGRID导入access
如果 expression1 为 且 expression2 为 则 result 为
True True False
True False True
False True True
False False False
var
I, J: Integer;
begin
I := 2;
j := 3
i xor J计算
i 10
j 11
------------
01
转换成十进制 就是1. 所以 i xor J 等于 1
到底是怎么实现的呢?
我觉得异或很奇怪。如果一个buffer数组有五个成员并且都是1的话,当chksum初始为0与每一个成员分别异或,那结果chksum是1,如果是六个成员1的话,那结果就是0,与buffer[Msendbufferlength-1]相比较,这样准确吗?另外说明buffer[Msendbufferlength-1]是协议的总长度,这个总长度怎么可能是1或者0呢??是不是我理解的错误了?
我知道异或是怎么用的。您可不可以看看我的回复。我没有把代码贴全,请看: // check sum
chksum:=0;
for i:=1 to MReceiveBufferLength-1 do
chksum:=chksum xor Buffer[i-1];
if Buffer[MReceiveBufferLength-1]<>chksum then
begin
result:=false;
exit;
end;