1
私は使用したい4バイトのデータ(unsigned intとして格納されている)を持っています。バッファをunsigned intに変換し、ビットマスクを使用する
これは1バイトのデータである場合、これは使用して解決されている:
//Java
buffer.getInt() & 0xFFFFFFFFL
//Current not working Objective-C code
uint32_t buffer;
[data getBytes:&buffer range:NSMakeRange(2, 4)];
uint32_t payloadLength = CFSwapInt32BigToHost(buffer);
//data: 0103940f b7626361
//buffer = 1656164244; payloadLength: 2484057954 (should be = ~80)
をObjective-について:
//Java
buffer.get() & 0xFF
//Objective-C
uint32_t buffer;
[data getBytes:&buffer range:NSMakeRange(2, 1)];
uint32_t payloadLength = buffer & 0xFFu;
//data = d1021b53
//buffer = 897307; payloadLength: 27
ジャワ、で4バイトため、これは使用して行われていますC/C、4バイトとビットマスクで作業するのが難しいです。
誰でもこれに関する助けがありますか?
私はこれを使って喜んでいませんでした。私は、符号なし整数を使用するように目的を変更することを反映するようにオリジナルを変更しました。 CFSwapInt32BigToHost(またはLittle)を4バイト値で使用しようとすると、結果がわかりません。上記の1バイトの例でも、それを使用しても動作しません。 java 0xFFFFFFFFビットマスクを複製する方法に関するその他の提案はありますか? –
この場合、ビットマスクを使用する必要はありません。あなたはあなたの質問を編集することができます(コメント内のコードを置くことは実際には機能しません)。この答えに基づいて現在持っているコードを表示し、 'NSLog(@"%@ \ n%8x \ n%8x "、data、buffer、payloadLength)'? (データが長い場合は、 'data'のダンプの一部を取り除いてください!) – CRD
私は、例の値を表示するために投稿を編集しました。 –