2013-06-20 23 views
2

如何將存儲在NSString中的一系列32位(代表4個字節)轉換爲objective-c中的4個字節的NSData對象?將一系列位轉換爲NSData對象

例如,我怎麼能轉換成以下字符串:

NSString *bitSeries = @"00000000000000000000000111101100"; 

與長度正好4 NSData對象?

回答

8

您可以使用strtoul()與基地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> 

或者,如果你喜歡big-endian字節訂購:

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