0

我有一个校验和,需要添加到十六进制的红宝石字符串中。我一直无法成功转换校验和。我对 ruby​​ 比较陌生,所以我不确定我是否遗漏了什么。这是我正在做的事情:

  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");
}

任何帮助,将不胜感激。

4

1 回答 1

2

.to_i0在角色上调用时将返回。

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
于 2012-12-05T17:30:32.530 回答