Data ext. 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 No transfer 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;
}