Objective c 是否从包含\0个字符的字符数组中创建NSString?

Objective c 是否从包含\0个字符的字符数组中创建NSString?,objective-c,nsstring,null,char,byte,Objective C,Nsstring,Null,Char,Byte,我试图从一个无符号字符数组(ASCII编码)初始化一个简单的NSString。问题是,数组中有一些\0作为分隔符。如果我使用 [[NSString alloc] initWithBytes:bytes length:length encoding:NSASCIIEncoding]; 我只得到第一个\0之前的零件。是否有一种方法可以获得在长度参数中指定的字节数,即使整个数组都包含在字符串中,只是当您尝试显示它时,仅显示到初始\0的部分 下面是说明这一点的代码: unsigned char dat

我试图从一个无符号字符数组(ASCII编码)初始化一个简单的
NSString
。问题是,数组中有一些
\0
作为分隔符。如果我使用

[[NSString alloc] initWithBytes:bytes length:length encoding:NSASCIIEncoding];

我只得到第一个
\0
之前的零件。是否有一种方法可以获得在长度参数中指定的字节数,即使整个数组都包含在字符串中,只是当您尝试显示它时,仅显示到初始
\0
的部分

下面是说明这一点的代码:

unsigned char data[] = "hello\0world";
NSString *str = [[NSString alloc] initWithBytes:data length:sizeof(data) encoding:NSASCIIStringEncoding];
NSLog(@"%@", str);
NSLog(@"%@", [str substringFromIndex:6]);
这将生成以下日志输出:

hello
world

谢谢你的澄清。你知道一种灵活的方法来记录这样的字符串吗?为此,我不介意将\0字符替换为占位符(如“?”)。我可以在char数组上循环并执行此操作。或者有更优雅的方式吗?实际上
[str stringByReplacingOccurrencesOfString:@“\0”with string:@”?]工作正常。