2

NSStringに格納されている一連の 32 ビット (4 バイトを表す) を、objective-c の 4 バイトのNSDataオブジェクトに変換するにはどうすればよいですか?

たとえば、次の文字列を変換するにはどうすればよいですか。

NSString *bitSeries = @"00000000000000000000000111101100";

長さNSDataが正確に 4 のオブジェクトに?

4

1 に答える 1

8

strtoul()base 2 を使用して、文字列を符号なし整数に変換できます。

NSString *bitSeries = @"00000000000000000000000111101100";
uint32_t value = strtoul([bitSeries UTF8String], NULL, 2);

NSData次に、オブジェクトを作成します。

NSData *data = [NSData dataWithBytes:&value length:sizeof(value)];
NSLog(@"%@", data);
// Output: <ec010000>

または、ビッグエンディアンのバイト順を好む場合:

value = OSSwapHostToBigInt32(value);
NSData *data = [NSData dataWithBytes:&value length:sizeof(value)];
NSLog(@"%@", data);
// Output: <000001ec>
于 2013-06-20T12:19:09.840 に答える