2013-12-23 113 views
-3

我需要这个代码转换为德尔福,我不知道如何:转换校验德尔福

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

你有什么困难? –

回答

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的数组上操作,通过变量名来判断。但是,如果我的猜测是错误的,你确实应该确保你理解所涉及的数据类型。