2012-02-29 13 views
0

私は自分のデータベースにリクエストしています。それに応じて、NSURLConnectionメソッドを使用してnsdataオブジェクトに入れているデータがたくさん届いています。NSDataオブジェクトから値を取得する方法

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    // Append the new data to receivedData. 
    // receivedData is an instance variable declared elsewhere. 
    [receivedData appendData:data]; 
} 

NSDataオブジェクト内のデータは、そのUInt16型変数1-私は、私はその後、それらの値それを識別できるか知りたいのですが、これまで..

によって表されるコードの各セクションのための識別子の値を持っていますデータのデコードを開始します。

私の計画では、上のメソッドからデータを渡すメソッドを持つクラスを作成します。受信メソッドはパケットを分割し、それぞれのセクションをそれぞれのメソッドに渡して解読したり、チェックしたりすることができます。

私はそれらの先行値をどのように特定できるかわかりませんUInt16変数のデータ表現です。

あなたがいくつかの提案や素晴らしいコードの例を作ることができたら、私は何らかの意味があることを願っています!

+0

あなたはCのポインタについてもっと知る必要があります... [recievedData bytes]を使ってそれらのバイスへのポインタにアクセスできます。そこから任意のサイズの要素にアクセスできます。オフセットは –

+1

です。NSDataをNSStringに変換できます...あなたの反応は何ですか? –

+0

ああ。私はそれを文字列に変換することを検討していましたが、意味は分かりませんでした。私の応答は、符号なしの32ビット整数と文字列が混在しています。各値の前には値の番号が続き、文字列の長さ(文字列の場合)、文字列または符号なしの値が続きます。 –

答えて

1

データの構造を考えると、それを手動で解析する必要があります。ループ内で-[NSData getBytes:range:]を使用して、データを反復処理し、コンポーネントを抽出します。エンコードされた数字をネイティブバイトオーダーに変換するには、NSSwap...ToHost()マクロファミリーを使用することを忘れないでください。

編集:NSSwapLittleIntToHost()NSSwapBigIntToHost()のドキュメントとヘッダーを参照してください。これらは、外部バイナリ数表現をネイティブCPUバイト順序に変換する多くの関数のうちの2つであり、その逆もあります。

+0

素晴らしい!これは本当に私はあなたの最後の行は(ネイティブのバイトにエンコードされた番号を変換するために、マクロのNSSwap ... ToHost()ファミリを使用することを忘れないでください何を意味するのか確認してくださいすることを確認していないよ..私はやっているにしたいもののように聞こえますあなたがこれに役立つ追加の言葉を持っているなら、私はこれを研究し始めるでしょう。 :) どうもありがとう。 –

+0

@ C.Johns私は、バイトオーダー機能に関するもう少しの情報を追加しました。 – Costique

関連する問題