パリティ計算


すえ太朗  2004-02-03 15:26:37  No: 111653  IP: [192.*.*.*]

7ビットデータに偶数パリティを付加した8ビットデータを作成したいのですが。パリティの計算が下記方法だとうまくいきません。
ビット演算の使用法が間違っているのでしょうか?
        dim a as byte
        dim  Msg_Txt as string
        a = AscB(Msg_Txt)
        If 1 = a And &H1 Then  ’0000 0001 チェック
            Cnt = Cnt + 1
        End If
        If &H2 = a And &H2 Then ’0000 0010 チェック  
            Cnt = Cnt + 1
        End If
        ・
        ・
うまくカウント出来ません。

編集 削除
とろ  2004-02-03 16:15:17  No: 111654  IP: [192.*.*.*]

演算子の優先順位について調べて下さい。

If &H2 = a And &H2 Then
と書いた場合
If (&H2 = a) And &H2 Then
と同じ意味ですよ。
If &H2 = (a And &H2) Then
としたいのではないですか?

編集 削除
すえ太朗  2004-02-04 09:12:25  No: 111655  IP: [192.*.*.*]

とろさんありがとうございます。優先順位を考慮する必要があるんですね。
新たな問題が有るんですが。
h’04(EOT)を上記ソフトで変換するとh’84となり、    
chr(&h84)ではうまく転送する事が出来ません。これは、文字コードに&h84が登録されてないからだと思うのですが。うまい方法は有りませんか?

編集 削除
いちゆ  2004-02-04 11:16:11  No: 111656  IP: [192.*.*.*]

>h’04(EOT)を上記ソフトで変換するとh’84となり、    
>chr(&h84)ではうまく転送する事が出来ません。
バイト型の配列に落とせば?
あと、ビットマスク演算だけど、結果が0かビット位になるから等号はいらないんじゃ?

編集 削除
しゅう  2004-02-04 12:22:24  No: 111657  IP: [192.*.*.*]

質問とは関係ありませんが、
Forループでビット検出された方が良いと思います。

編集 削除