2013-12-23 118 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的數組上操作,通過變量名來判斷。但是,如果我的猜測是錯誤的,你確實應該確保你理解所涉及的數據類型。