2009-04-04 4 views
11

NSMutableDataにNSIntegerをどのように追加しますか? ...NSIntegerをNSMutableDataに追加する

NSMutableData *myData = [[NSMutableData alloc] init]; 
NSInteger myInteger = 42; 

[myData appendBytes:myInteger length:sizeof(myInteger)]; 

したがって、0x0000002AがmyDataに追加されるようになります。

助けてください。

答えて

22

整数自体のアドレスではなく、整数のアドレスを渡します。 appendBytes:length:は、データバッファへのポインタとデータバッファのサイズを想定しています。この場合、「データバッファ」は整数です。

[myData appendBytes:&myInteger length:sizeof(myInteger)]; 

これは、コンピュータのエンディアンを使用してエンコードすることに注意してください。データをファイルに書き込んだり、ネットワークを介して送信したりする場合は、代わりに既知のエンディアンを使用する必要があります。例えば、htonl()を使用し、エンディアンをネットワークに(マシン)のホストから変換する:

uint32_t theInt = htonl((uint32_t)myInteger); 
[myData appendBytes:&theInt length:sizeof(theInt)]; 
+0

ntohl上のヒントをありがとう()、それがネットワーク経由で送信されている:) – holz

+0

おかげでたくさんのこの私を助けます – akin

関連する問題