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

时间:2012-08-12 15:40:11

标签: objective-c nsstring null char byte

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

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

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

1 个答案:

答案 0 :(得分:5)

整个数组生成字符串,只是当你尝试显示它时,只会显示最初为\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