ios - 将 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'??
谢谢!
解决方案
所有 C 字符串都必须以零结尾:
const char sbyte[] = {65, 66, 0};
它们不包含任何长度信息,因此零是检测数据结束的一种方式。
推荐阅读
- python - 为什么 python 似乎会乱序执行代码?
- c# - UWP Popup 类错误
- javascript - 反应:导入'../node_modules/bootstrap/dist/css/bootstrap.min.css';错误
- xml - MSXML2.XMLHTTP 对象是否支持 TLS 1.2 (VBA/EXCEL)?
- laravel - Laravel 和 CTE 的
- docusignapi - DocuSign API 复本
- html - Bootstrap form-group CSS 类究竟做了什么?
- android - Android Studio:APK 构建失败
- javascript - 如何解决 react-redux 应用程序中的 add-comment 和 remove-comment 问题
- sql - 将除最后三行之外的所有 CSV 文件导入 SQL 表