【转】iOS中16进制转10进制
2016-06-19 23:16
465 查看
原文网址:http://www.voidcn.com/blog/u012198553/article/p-4976772.html
/// 将十六进制的字符串转化为NSData
- (NSData )transStrHexToData:(NSString )strHex
{
/// bytes索引
NSUInteger j = 0;
}
/// 将十六进制的字符串转化为NSData
- (NSData )transStrHexToData:(NSString )strHex
{
/// bytes索引
NSUInteger j = 0;
NSInteger len = strHex.length; if (len % 2 == 1) { /// 若不能被2整除则说明16进制的字符串不满足图片图。特此说明,假如只是单纯的把十六进制转换为NSData就把这个if干掉即可, return nil; } /// 动态分配内存 Byte *bytes = (Byte *)malloc((len / 2 + 1) * sizeof(Byte)); /// 初始化内存 其中memset的作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 memset(bytes, '\0', (len / 2 + 1) * sizeof(Byte)); /// for循环里面其实就是把16进制的字符串转化为字节数组的过程 for (NSUInteger i = 0; i < strHex.length; i += 2) { /// 一字节byte是8位(比特)bit 一位就代表一个0或者1(即二进制) 每8位(bit)组成一个字节(Byte) 所以每一次取2为字符组合成一个字节 其实就是2个16进制的字符其实就是8位(bit)即一个字节byte NSString *str = [strHex substringWithRange:NSMakeRange(i, 2)]; /// 将16进制字符串转化为十进制 unsigned long uint_ch = strtoul([str UTF8String], 0, 16); bytes[j] = uint_ch; /// 自增 j ++; } /// 将字节数组转化为NSData NSData *data = [[NSData alloc] initWithBytes:bytes length:len / 2]; /// 释放内存 free(bytes); return data;
}
相关文章推荐
- ios osx 多线程编程指南
- iOS学习之事件处理的原理
- iOS新闻客户端开发教程8-加载更多和新闻详情
- iOS开发,javascript直接调用oc代码而非通过改变url回调方式
- iOS屏幕旋转学习笔记
- iOS开发之Socket
- Nagios 4.0.1安装
- 个人简历
- iOS是怎么被越狱的(UAF漏洞详解)
- iOS打包ipa步骤
- iOS百度地图 Demo
- iOS开发多线程篇 03 —线程安全
- IOS多线程开发
- [置顶] iOS应用程序执行流程
- iOS开发25个性能调优技巧
- iOS项目冗余资源扫描脚本
- ios 通过一个View生成一个图片
- ios sdk二维码生成器
- iOS使用半透明模糊效果方法整理
- IOS SDK图片二维码识别