0

16進数のルビー文字列に追加する必要があるチェックサムがあります。チェックサムを正常に変換できませんでした。私はルビーに比較的慣れていないので、何かが足りないかどうかわかりません。これが私がしていることです:

  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#参照コードも持っていますが、長い間Mac C / C ++ / Obj-Cコーダーである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 に答える