投稿者 ねぼすけ  (社会人) 投稿日時 2016/10/31 12:30:51
バイト配列を16進数で表示して

   {01,00,31,32,41,42,43,FF,0E,4A}

とします。
これらは、アスキーコードであれば

   {・,・,1,2,A,B,C,・,・,J}

となります。
ここから、「ABC」とならんでいれば「A」の位置を取得したいと思います。
下記のように、目的は達成されますが、もっと簡単な方法はありませんか。
宜しくお願いします。
        'バイト配列準備 
        Dim data As String() = {"01""00""31""32""41""42""43""FF""0E""4A"}
        Dim byteData(9) As Byte
        Dim i As Integer = 0
        For Each dt As String In data
            byteData(i) = Convert.ToInt32(dt, 16)
            i += 1
        Next
        'ABCの位置を取得する 
        Dim target As String = "ABC"
        Dim address As Integer = 0
        Dim found As Boolean = False
        For i = 0 To byteData.Length - 3
            Dim s1 As String = ChrW(byteData(i))
            Dim s2 As String = ChrW(byteData(i + 1))
            Dim s3 As String = ChrW(byteData(i + 2))
            Dim str As String = s1 & s2 & s3
            If str = target Then
                found = True
                address = i
                Exit For
            End If
        Next
        If found = True Then
            MsgBox("Address=" & address)
        Else
            MsgBox("Not Match!")
        End If