C#到ruby校验和转换

时间:2012-12-05 17:11:57

标签: ruby ruby-on-rails-3

我有一个校验和,我需要将其添加到十六进制的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");
}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分: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