代码:
const char sbyte[] = {65, 66};
NSLog(@"byte:%c", 66);
NSLog(@"byte:%c", 67);
NSLog(@"byte:%s", sbyte);
NSString *string1 = [[NSString alloc] initWithCString:sbyte encoding:NSUTF8StringEncoding];
NSLog(@"string1: %@", string1);
NSString *string2 = [NSString stringWithFormat:@"%s", sbyte];
NSLog(@"string2: %@", string2);
打印:
byte:B
byte:C
byte:ABb
string1: ABb
string2: ABb
正确的应用是'AB',但现在是'ABb',多一个字符'b'??
谢谢!
最佳答案
所有 C 字符串都必须以零结尾:
const char sbyte[] = {65, 66, 0};
它们不包含任何长度信息,因此零是检测数据结束的一种方式。
关于ios - 将char数组转换为NSString对象的方式,最后一个字符多一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55689935/