2012-12-05 47 views
0

我有一個校驗和,我需要添加到十六進制紅寶石字符串。我一直無法成功轉換校驗和。我對ruby比較陌生,所以我不確定我是否錯過了一些東西。下面是我在做什麼:C#紅寶石校驗和轉換

def get_checksum message 
    # get the checksum 
    cnt = 0 
    lrc = 0 
    while (cnt < message.length - 1) 
     lrc = lrc^message[cnt].to_i 
     cnt += 1 
    end 

    # return as hex 
    lrc.to_s.each_byte.map { |b| b.to_s(16) + " " }.join 
    end 

我有一些C#參考代碼爲好,但從未使用過C#是一個很長一段時間MAC C/C++ /的OBJ-C編碼器。這裏是我試圖轉換的C#代碼:

// calculate LRC 
private string GetChecksum(string inputstring) 
{ 
    int checksum = 0; 
    foreach (char c in inputstring) 
    { 
     checksum ^= Convert.ToByte(c); 
    } 
    return checksum.ToString("X2"); 
} 

任何幫助,將不勝感激。

回答

2

.to_i將在字符上調用時返回0

def get_checksum message 
    # get the checksum 
    lrc = 0 
    message.each_byte do |b| 
     lrc = lrc^b 
    end 
    # return as hex 
    lrc.to_s(16) 
end 
+0

謝謝!非常感激! – slycrel