チェックサム計算

チェックサム計算がなにげに面倒くさかったです。
きっと組み込みな人々は、もっとよい方法を知っているのであろう・・・。

環境

チェックサム計算

この例では、1バイト単位の16進数配列をチェックサム計算し、その配列にチェックサムを追加しています。

array = ["05", "0A", "0F"]			  => ["05", "0A", "0F"]
sum = "%02X" % array.inject(0){|s,c| s += c.hex}  => "1E"
array << sum[-2..-1]	              => ["05", "0A", "0F", "1E"]	# 最後の二文字を取り出す

ポイント

  • チェックサム計算したいデータを1バイト単位で配列に格納
  • injectでたたみ込み計算
  • sprintfで16進数に変換