【发布时间】:2013-12-23 16:51:31
【问题描述】:
我需要将此代码转换为 Delphi,但我不知道如何:
{
LRC=0
for (ch=1;ch<n+1;ch++){
LRC=LRC^BYTE[ch];
}
LRC=LRC^ETX;
}
【问题讨论】:
-
您在任务的哪一部分遇到了问题?
我需要将此代码转换为 Delphi,但我不知道如何:
{
LRC=0
for (ch=1;ch<n+1;ch++){
LRC=LRC^BYTE[ch];
}
LRC=LRC^ETX;
}
【问题讨论】:
理解这一点的关键如下:
^ 是什么。它是按位异或。在 Delphi 中,代码可能如下所示:
function CalcChecksum(const buff: array of Byte): Byte;
const
ETX = ...; // you'll need to obtain your value from the C source code
var
i: Integer;
begin
Result := 0;
for i := low(buff) to high(buff) do
Result := Result xor buff[i];
Result := Result xor ETX;
end;
C 代码使用从 1 开始的数组,这至少可以说很奇怪。在 Delphi 中,我认为开放数组参数最有意义。
我宁愿想象 C 代码在 unsigned char 的数组上运行,从变量名来看。但是,您确实应该确保您了解所涉及的数据类型,以防我的猜测有误。
【讨论】: