文字列の比較がうまくできません への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 シン  (社会人) 投稿日時 2011/4/1 10:38:52
shuさん、ご返答ありがとうございます。

説明が足りませんでしたが、取得するデータの長さを指定するデータが、この前についているので、この場合ですと10バイトのデータを指定されているからです。

If dA="1.4.1.1.2" & Chr(0) Then
とすると、うまくいきました。

見えない文字を指摘していただき、ありがとうございます。

解決済みとさせていただきます。
投稿者 shu  (社会人) 投稿日時 2011/4/1 07:50:44
なぜ&H0が最後にあるデータで試しているのが分かりませんが
&H0を文字列の最後として扱っているということであれば、
&H0の前までのデータで変換をするようにすればよいかと思います。
投稿者 シン  (社会人) 投稿日時 2011/4/1 00:12:27
うまくいかないコードをのせます。
ご指導おねがいます。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim bin() As Byte = {&H31, &H2E, &H34, &H2E, &H31, &H2E, &H31, &H2E, &H32, &H0}  '1.4.1.1.2
    Dim dA As String
    dA = System.Text.ASCIIEncoding.ASCII.GetString(bin, 0, 10)
    Label1.Text = dA

    If dA = "1.4.1.1.2" Then
        Label2.Text = "同じです"
    Else
        Label2.Text = "違います"
    End If

End Sub

これでは"違います"とででしまいます。「&H0」をどのように処理したらよいのでしょうか。
投稿者 シン  (社会人) 投稿日時 2011/3/31 23:17:31
shuさん、ぺぺたろうさん、ご返答ありがとうございます。

shuさんのご指摘通り、文字列を検証したところ、一番最後に「&H00」がついておりました。
ASCIIコード表のNULで、System.Text.ASCIIEncoding.ASCII.GetStringで得られた文字列には、見えていませんでした。このことを、指摘されていたのですね。

でも、また困ってしまいました。

このように見えない文字は、どうやって比較したらよいのでしょうか。
投稿者 ぺぺたろう  (中学生) 投稿日時 2011/3/31 21:53:03
GetStringの第2、3引数の値がおかしいのかな、と思いましたが、iとLengthに代入しているコードが書かれてないのでわかりません。
投稿者 shu  (社会人) 投稿日時 2011/3/31 21:33:39
本当に"予想通りの文字列"が入っているのでしょうか?
dAに見えない文字が連結されている可能性があるので
よく調べてみる必要があります。
bufのバイト数から予想通りの文字列を取得できるかよく検証してみて下さい。
投稿者 シン  (社会人) 投稿日時 2011/3/31 20:34:46
バイナリダンプを勉強しています。また別の質問をさせていただきます。
VB2010です。
System.Text.ASCIIEncoding.ASCII.GetStringで得られた文字列が、正しくえられているのかチェックしていますが、うまくいかなくてこまっています。

Dim buf() As Byte
FIleStream.readを用いてデータをbufに取り込んでいます。

Dim dA as string
dA = System.Text.ASCIIEncoding.ASCII.GetString(buf, i, Length)

label1.text=dA

ここまでは、label1に予想通りの文字列が得られているのが確認できています。
このあとで、
If dA ="予想通りの文字列" then
   label2.text = "正しく得られています"
End if
としても、label2には反応が無く、ただしく比較できていないようです。
String.Equalsクラスなども試してみましたが、ダメでした。

どうすれば、うまく比較できるのでしょうか。