2011-08-11 12 views
0

私はtoMatchバイトはtoScanバイトのサブセットである知るための最良の方法は何2つのNSDataオブジェクトNSDataは別のNSDataの部分文字列ですか?

NSData *toScan = /* initialized somehow with "Hello, this world." */; 
NSData *toMatch = /* initialized somehow with "this" */; 

がありますか? 私はこの時点では、この目的のためにC-関数を使用:で

+0

文字列toMatchがtoScanにある場合にのみstrstrが機能します。しかし、toMatchが代わりに "cdb"の場合はどうでしょうか?それはまだサブセットですが、strstrはそれをキャッチしません。それとも起こりませんか?また、空間効率は計算効率よりも重要ですか?バイトは常にアルファベット順になるでしょうか? –

+0

私は自分の質問を編集しました。 –

答えて

2

Snow LeopardとiOS 4.0の時点で、NSDataにはあなたが望むようにするべき-rangeOfData:options:range:があります。

また、かなり速いです。

0

...この

strstr([[toScan identifier] bytes], [[toMatch identifier] bytes]); 
// returned bytes are null-terminated 

のようなものを私はオブジェクト指向の環境でC-機能を使用するための最良の方法が存在しないと思いますあなたが探しているものをやる

Elegant Algorithm for Parsing Data Stream Into Record

:別の質問は、私はrangeOfData:方法でNSDataカテゴリを含む返事を書きました。

関連する問題