记Objective-C解码C字符串遇到的坑
来源:互联网 发布:淘宝店童装 编辑:程序博客网 时间:2024/06/15 08:58
昨晚在解析文本时用到了以下方法
NSStringEncoding encoding =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
char *buff = malloc(HeadByteSize);
[micapsData getBytes:buff range:NSMakeRange(0, HeadByteSize)];
NSString *headString = [NSStringstringWithCString:buffencoding:encoding];
然而在多次运行程序中headString有时结果正确,有时候却是nil;或者在语句前加断点时解码正确,而去掉断点得到nil。。。
自以为遇到灵异事件的第二天,突然想起C字符串是以\0作为结束的标志,而stringWithCString: encoding:方法并没有让使用者指定String的长度,所以需要在字符串的结尾处手动加上\0。即给以上代码中的buff的后一个字节变为0。
NSStringEncoding encoding =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
char *buff = calloc(HeadByteSize +1, sizeof(char));
[micapsData getBytes:buff range:NSMakeRange(0,HeadByteSize)];
NSString *headString = [NSStringstringWithCString:buff encoding:encoding];
注:
- calloc()有内存初始化为全0的功能,而malloc没有
- 若不在字符串结尾处加上\0,则会解码未分配内存,由于未分配内存的值随机,所以程序运行结果也不确定
- 记Objective-C解码C字符串遇到的坑
- Objective-C 字符串的连接
- Objective-C 字符串的连接
- Objective-C 字符串的处理
- Objective-c 字符串的拼接
- Objective-C Base64编解码
- objective-c switch 遇到的诡异问题
- Objective-c 字符串遍历
- objective-c 字符串格式化
- Objective-C字符串处理
- objective-c字符串
- objective-c字符串查找
- Objective-C字符串处理
- Objective-C字符串详解
- objective C中的字符串
- Objective-C字符串
- Objective-C字符串处理
- Objective-C字符串处理
- android 事件分发
- 禁止页面缓存的几种方法
- 扁平化imageview
- 以pfile或者spfile启动时show parameter pfile的不同结果
- Android Studio编译错误 finished with non-zero exit value 2
- 记Objective-C解码C字符串遇到的坑
- hadoop下kmeans算法实现四
- html5学习_MySecondPage_文本排版
- MPAndroidChart介绍
- Jquery 操作 Frame示例
- 源码篇——安卓启动流程
- ActiveMQ学习总结(4)——业界消息队列简介
- 特大喜讯,View and Data API 现在支持中文界面了
- Node.js开发者必须了解的4个JS要点