web-dev-qa-db-ja.com

チェックサムの計算方法

計測器ドライバを開発していますが、フレームのチェックサムを計算する方法を知りたいです。

説明:

  1. 文字[0-9]および[A-F]で表されます。

  2. [STX]の後から[ETB]または[ETX]までの文字([ETB]または[ETX]を含む)は、バイナリで追加されます。

  3. 16進数コードの最下位8ビットを表す2桁の数値は、ASCII文字[0-9]および[A-F]に変換されます。

  4. 最上位の桁はCHK1に、最下位の桁はCHK2に格納されます。

3番目と4番目のポイントを超えていません。

誰でもc#のサンプルコードを提供できます。

私を助けてください。

15
Rikin Patel

最後に私は答えを得ました、これはチェックサムを計算するためのコードです:

private string CalculateChecksum(string dataToCalculate)
{
    byte[] byteToCalculate = Encoding.ASCII.GetBytes(dataToCalculate);
    int checksum = 0;
    foreach (byte chData in byteToCalculate)
    {
        checksum += chData;
    }
    checksum &= 0xff;
    return checksum.ToString("X2");
}
18
Rikin Patel

これは1行で行うことができます。

return Encoding.ASCII.GetBytes(dataToCalculate).Aggregate((r, n) => r += n).ToString("X2");
0
Aleksey