将一系列位转换为NSData对象

ntc*_*cio 2 bits objective-c nsdata ios

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

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

NSString *bitSeries = @"00000000000000000000000111101100";
Run Code Online (Sandbox Code Playgroud)

进入NSData长度恰好为4的物体?

Mar*_*n R 8

您可以使用strtoul()base 2将字符串转换为无符号整数:

NSString *bitSeries = @"00000000000000000000000111101100";
uint32_t value = strtoul([bitSeries UTF8String], NULL, 2);
Run Code Online (Sandbox Code Playgroud)

然后创建一个NSData对象:

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

或者,如果您更喜欢big-endian字节顺序:

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