3

データを含む NSData パケットがあります。範囲 8、1 のバイトを int に変換する必要があります。その場所でデータを取得するには、次のようにします。

NSData *byte = [packet subdataWithRange:NSMakeRange(8, 1)];

I NSLog バイトの場合

<01>

これをintに変換するにはどうすればよいですか?これはおそらく最も基本的な質問ですが、正しく理解できていません。

どんな助けでも大歓迎です。

アップデート

そのデータでは、int は 1 に等しいはずです。これがエンディアンと関係があるかどうかはわかりません。

4

1 に答える 1

5

-[NSData bytes]を使用して生のバッファを取得し、そこから読み取ります

int i = *((char *)[byte bytes])

または-[NSData getBytes:length:]を使用します

char buff;
[bytes getBytes:&buff length:1];
int i = buff;

notから読み取っていることを確認してください。そうしchar *ないint *と、無効なメモリ位置にアクセスしているため、クラッシュしたり、正しい結果が得られない場合があります。

于 2013-11-11T09:29:24.113 に答える