ios - 将一系列位转换为 NSData 对象

标签 ios objective-c nsdata bit

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

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

NSString *bitSeries = @"00000000000000000000000111101100";

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

最佳答案

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

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>

关于ios - 将一系列位转换为 NSData 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17213264/

相关文章:

ios - 将数据转换为 bool 值

objective-c - 如何在 NSString 中使用 SHA1 哈希捕获 NSData?

ios - 由于未捕获的异常 'NSInternalInconsistencyException' - HTTPS 错误而终止应用程序

objective-c - 在 Objective-C 中在后台运行 C 函数

iphone - 调整标签在 UITableViewCell 中的位置

objective-c - 如何在 Cocoa 应用程序中解析 Objective-C 代码

c - Xcode中如何使用C语言处理网络包

ios - 自定义 MKAnnotation 标注 View ?

ios - 如何访问组共享文件夹中的 NSCachesDirectory 目录?

ios - ARC下sharedInstance模式的内存含义是什么?