从char数组创建NSString,其中包含\ 0字符?

Dru*_*erB 4 null byte objective-c char nsstring

我正在尝试NSString从unsigned char数组(ASCII编码)初始化一个简单的.问题是,\0数组中有一些s作为分隔符.如果我使用

[[NSString alloc] initWithBytes:bytes length:length encoding:NSASCIIEncoding];
Run Code Online (Sandbox Code Playgroud)

我只得到第一个部分\0.有没有办法获得length参数中指定的字节数量,即使有\0s?

das*_*ght 5

整个数组进入字符串,只是当你尝试显示它时,只显示直到初始的部分\0.

以下是用于说明这一点的代码:

unsigned char data[] = "hello\0world";
NSString *str = [[NSString alloc] initWithBytes:data length:sizeof(data) encoding:NSASCIIStringEncoding];
NSLog(@"%@", str);
NSLog(@"%@", [str substringFromIndex:6]);
Run Code Online (Sandbox Code Playgroud)

这会产生以下日志输出:

hello
world
Run Code Online (Sandbox Code Playgroud)