アプリ版:「スタンプのみでお礼する」機能のリリースについて

バイナリファイルを読込み、バイト配列に格納しています。

aaa(0) = 0
aaa(1) = 90
aaa(2) = 0
aaa(3) = 255
aaa(4) = 255
aaa(5) = 0
aaa(6) = 255

この配列から、「FFFF」が見つかった位置を検索したいと考えています。
(上の例で言うと3を取得したい)

現在は配列の最初から最後まで1バイトずつずらして読込み、見つかった場所を特定しています。16進表記の文字列に変換し、文字列として検索する方法も考えましたが、どちらも非効率な気がしています。

他のやり方を知っている方がいましたら教えてください。

[環境]
VB2008,XP32SP3

A 回答 (2件)

こんなのではどうでしょう?



Dim aaa(6) As Byte
aaa(0) = 0
aaa(1) = 90
aaa(2) = 0
aaa(3) = 255
aaa(4) = 255
aaa(5) = 0
aaa(6) = 255

Dim idx As Integer = Array.IndexOf(aaa, CByte(255))
MessageBox.Show(idx.ToString)
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
やりたいことは連続したバイナリデータの検索です。
VBの文字列検索で言うとInStr関数みたいなのをバイト配列でやろうと思っています。

お礼日時:2011/03/02 09:18

例えば、C言語では、文字列は「文字」の配列、文字は「文字を表わす数値」ですから、文字列探索=配列内の一定パターンの探索です。



つまり、今回の場合は、そのまま文字列探索のアルゴリズムを応用する(というかそのまま使う)とよい、ということです。

http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97% …
このあたりのアルゴリズムが使えます。
    • good
    • 0
この回答へのお礼

そういえばVBのString型も.NETから配列に格納されていた気がします。
まだモヤモヤしていますががんばってみます。
ありがとうございます。

お礼日時:2011/03/02 09:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!