将一系列位转换为NSData对象

时间:2013-06-20 12:07:09

标签: ios objective-c nsdata bits

如何将NSString中存储的一系列32位(代表4个字节)转换为objective-c中4个字节的NSData个对象?

例如,如何转换以下字符串:

NSString *bitSeries = @"00000000000000000000000111101100";

进入NSData对象,长度恰好为4?

1 个答案:

答案 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>