首页 > 解决方案 > 将 char 数组转换为 NSString 对象的方式,最后一个字符

问题描述

代码:

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'??

谢谢!

标签: iosobjective-c

解决方案


所有 C 字符串都必须以零结尾:

const char sbyte[] = {65, 66, 0};

它们不包含任何长度信息,因此零是检测数据结束的一种方式。


推荐阅读