2

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

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

NSString *bitSeries = @"00000000000000000000000111101100";

进入NSData长度正好为 4 的对象?

4

1 回答 1

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>

或者,如果您更喜欢大端字节序:

value = OSSwapHostToBigInt32(value);
NSData *data = [NSData dataWithBytes:&value length:sizeof(value)];
NSLog(@"%@", data);
// Output: <000001ec>
于 2013-06-20T12:19:09.840 回答