NSString
に格納されている一連の 32 ビット (4 バイトを表す) を、objective-c の 4 バイトのNSData
オブジェクトに変換するにはどうすればよいですか?
たとえば、次の文字列を変換するにはどうすればよいですか。
NSString *bitSeries = @"00000000000000000000000111101100";
長さNSData
が正確に 4 のオブジェクトに?
NSString
に格納されている一連の 32 ビット (4 バイトを表す) を、objective-c の 4 バイトのNSData
オブジェクトに変換するにはどうすればよいですか?
たとえば、次の文字列を変換するにはどうすればよいですか。
NSString *bitSeries = @"00000000000000000000000111101100";
長さNSData
が正確に 4 のオブジェクトに?
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>