iOS中16进制转nsdata
2016-09-27 11:50
597 查看
//data转16
+(NSString *)DataToHexStr:(NSData *)data {
if (!data || [data
length] == 0) {
return
@"";
}
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;
}
//16禁止转data
+(NSData *)HexStrToData:(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;
}
return hexData;
}
+(NSString *)DataToHexStr:(NSData *)data {
if (!data || [data
length] == 0) {
return
@"";
}
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;
}
//16禁止转data
+(NSData *)HexStrToData:(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;
}
return hexData;
}
相关文章推荐
- iOS 视频直播资源收集
- iOS AFNetworking中cookie重定向代码
- 快速集成iOS基于RTMP的视频推流
- iOS系统通知NSNotificationName
- iOS平台基于ffmpeg的视频直播技术揭秘
- iOS直播技术分享-音视频采集(一)
- ios中字符集转化
- iOS10新特性及开发者注意事项
- Ios-视频直播-知识点汇总-持续更新
- iOS 隐藏掉状态栏
- iOS实现动态元素的引导图效果
- iOS中集成ijkplayer视频直播框架
- ios10 问题总结
- iOS AFNetworking中cookie重定向
- iOS代码重构
- iOS开发:TextField随着键盘的弹出上移
- iOS10通知框架UserNotification理解与应用
- iOS10 权限崩溃问题
- xcode8 cocoapods 执行 pod spec lint 报错
- 轻松搞定iOS本地消息推送