十六进制和字符串相互转换
2016-02-22 14:49
295 查看
//将十六进制的字符串转换成NSString则可使用如下方式: + (NSString *)convertHexStrToString:(NSString *)str { if (!str || [str length] == 0) { return nil; } NSMutableData *hexData = [[NSMutableData alloc] initWithCapacity:8]; NSRange range; if ([str length] % 2 == 0) { range = NSMakeRange(0, 2); } else { range = NSMakeRange(0, 1); } for (NSInteger i = range.location; i < [str length]; i += 2) { unsigned int anInt; NSString *hexCharStr = [str substringWithRange:range]; NSScanner *scanner = [[NSScanner alloc] initWithString:hexCharStr]; [scanner scanHexInt:&anInt]; NSData *entity = [[NSData alloc] initWithBytes:&anInt length:1]; [hexData appendData:entity]; range.location += range.length; range.length = 2; } NSString *string = [[NSString alloc]initWithData:hexData encoding:NSUTF8StringEncoding]; return string; }
//将NSString转换成十六进制的字符串则可使用如下方式: + (NSString *)convertStringToHexStr:(NSString *)str { if (!str || [str length] == 0) { return @""; } NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; NSMutableString *string = [[NSMutableString alloc] initWithCapacity:[data length]]; [data enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop) { unsigned char *dataBytes = (unsigned char*)bytes; for (NSInteger i = 0; i < byteRange.length; i++) { NSString *hexStr = [NSString stringWithFormat:@"%x", (dataBytes[i]) & 0xff]; if ([hexStr length] == 2) { [string appendString:hexStr]; } else { [string appendFormat:@"0%@", hexStr]; } } }]; return string; }
相关文章推荐
- iOS- 相机(摄像头)获取到的图片自动旋转90度解决办法
- csdn博客 代码块的显示设置以及图片的插入技巧
- 详解Android全局异常的捕获处理
- Android 打造炫目的圆形菜单 秒秒钟高仿建行圆形菜单
- struts笔记
- Rational统一过程(Rational Unified Process)
- jQuery自学教程(四)——事件
- 场景NGUI动态字体消失快速显现的临时解决办法
- UML三个基本构造块之——事物
- 关于网页头图标ico的问题
- 少有人走的路Ⅱ:与心灵对话 读后感一
- 需要中文版《The Scheme Programming Language》的朋友可以在此留言(内附一小段译文)
- 模态跳转和push跳转到公共页面如何返回
- CMD 和 Git 中的设置使用代理
- 数据结构(集合和数组)
- 密码算法详解——AES
- iOS开发---给金钱添加分隔符
- PL/SQL语言特性
- Tomcat负载均衡原理详解及配置(Apache2.2.19+Tomcat7.0.12)
- Html5页面返回机制解决方案