ios - 将char数组转换为NSString对象的方式,最后一个字符多一个

标签 ios objective-c

代码:

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/

相关文章:

ios - MapKit 是否提供高程数据?

ios - 类型 'ChatViewController' 没有成员 'showOrHideKeyboard'

objective-c - 无法加载localizable.strings

objective-c - 在Cocoa中同时捕获多个按键

来自sqlite数据库的ios图像显示

ios - 错误: Page Control jump twice with single page swap

ios - 找不到您输入的 apple id 或您的密码不正确。请再次尝试测试应用内购买

iphone - 在 iPhone 模拟器上运行 .app 文件

ios - 核心数据注释——修复缺失的删除传播

ios - 如何在 iOS TableView 中每行创建多个点击处理程序?