char *到NSData问题

时间:2016-10-03 19:12:33

标签: objective-c nsdata

我正在尝试编写一个以char*作为输入参数的函数,并将其序列化为JSON。

我遇到了将输入参数options转换为NSData的问题。我使用了以下代码行:

NSData *data = [NSData dataWithBytes:options length:sizeof(options)];

这不起作用。一组不同的代码确实有效:

NSString* stringFromChar = [[NSString alloc] initWithUTF8String:options]; NSData * data = [stringFromChar dataUsingEncoding:NSUTF8StringEncoding];

我很好奇为什么有必要将我的代码从char*转换为NSString然后转换为NSData以及为什么我不能直接执行此操作。有没有办法在没有这个中间步骤的情况下直接将char*转换为NSData?感谢。

1 个答案:

答案 0 :(得分:1)

正如评论所示,sizeof(options) optionschar *将产生指针的大小,而不是字符串的长度。在评论中也指出,strlen(options)将字符计数到第一个0x0,这就是你想要的......

NSData *data = [NSData dataWithBytes:options length:strlen(options)];
// options must be null-terminated