如何将NSString
中存储的一系列32位(代表4个字节)转换为objective-c中4个字节的NSData
个对象?
例如,如何转换以下字符串:
NSString *bitSeries = @"00000000000000000000000111101100";
进入NSData
对象,长度恰好为4?
答案 0 :(得分: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>
或者,如果您更喜欢big-endian字节顺序:
value = OSSwapHostToBigInt32(value);
NSData *data = [NSData dataWithBytes:&value length:sizeof(value)];
NSLog(@"%@", data);
// Output: <000001ec>