チェックサムの実装方法


kaihatusha  2010-11-04 15:50:49  No: 102657  IP: [192.*.*.*]

vb.netで下記の様な条件のチェックサムの実装方法について、
教えて下さい。
「チェックサム以外の送信データの和+チェックサム=下位2バイトが0x0000となる値」
※チェックサム以外の送信データの和は、該当する各送信データの1バイト単位の和

下記が現在うまくいかないソースになります。

''Check Sum -----------------------------------
''bytSendDataが送信データ

Dim srtChk As Integer = 0

'チェックサムを除いた送信データの和
For intCnt As Integer = 0 To bytSendData.Length - 3
srtChk = srtChk + bytSendData(intCnt)
Next

'送信データの和よりチェックサムを計算
srtChk = &H10000 - srtChk
Dim srtSumH As Short = &HFF And (srtChk >> 8)
Dim srtSuml As Short = &HFF And (srtChk)

'チェックサムの設定
bytSendData(37) = srtSumH
bytSendData(38) = srtSuml

編集 削除
魔界の仮面弁士  2010-11-04 18:21:22  No: 102658  IP: [192.*.*.*]

> vb.netで下記の様な条件のチェックサムの実装方法について、
ここは『VB掲示板(VB2-VB6専用)』です。

VB6 としての回答でも良いなら、ここでそのまま続けても構いませんが、
VB.NET としての回答を望むのであれば、隣の掲示板に移動願います。
また、投稿する際には VB.NET のバージョンも明記してください。

ソースを見る限り、少なくとも 2002 では無さそうですが…。


> 下記が現在うまくいかないソースになります。

おそらく、bytSendData のインデックスはおそらく(0〜38) の範囲で、
0〜36 がデータ部、末尾の 37/38 がチェックサムなのだと思いますが、
まずは、どこがどううまくいかないのかを説明願えますでしょうか。

(チェックサムの値が予想値と異なるのか、それとも、計算した値を
  bytSendData にセットする段階で問題が発生しているのか、など)

編集 削除
kaihatusha  2010-11-04 19:01:08  No: 102659  IP: [192.*.*.*]

すみません。VB.NETの掲示板の方へ移動しました。

編集 削除