【问题标题】:Convert checksum to Delphi [closed]将校验和转换为 Delphi [关闭]
【发布时间】:2013-12-23 16:51:31
【问题描述】:

我需要将此代码转换为 Delphi,但我不知道如何:

{
    LRC=0
    for (ch=1;ch<n+1;ch++){
        LRC=LRC^BYTE[ch];
    }
    LRC=LRC^ETX;
}

【问题讨论】:

  • 您在任务的哪一部分遇到了问题?

标签: delphi checksum


【解决方案1】:

理解这一点的关键如下:

  1. 如何将 C for 循环转换为 Delphi。
  2. C 运算符^ 是什么。它是按位异或。

在 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 的数组上运行,从变量名来看。但是,您确实应该确保您了解所涉及的数据类型,以防我的猜测有误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多