1、Data 2 Hex
// byte 2 hex
- (NSString *)stringFromByte:(Byte)byteVal
{
NSMutableString *str = [NSMutableString string];
//取高四位
Byte byte1 = byteVal>>4;
//取低四位
Byte byte2 = byteVal & 0xf;
//拼接16进制字符串
[str appendFormat:@"%x",byte1];
[str appendFormat:@"%x",byte2];
return str;
}
- (NSString *)hexStringFromData:(NSData *)data
{
NSMutableString *str = [NSMutableString string];
Byte *byte = (Byte *)[data bytes];
for (int i = 0; i<[data length]; i++) {
// byte+i为指针
[str appendString:[self stringFromByte:*(byte+i)]];
}
return str;
}
2、Hex 2 Data
// hex 2 byte
- (NSData *)dataFromHexString:(NSString *)hexStr
{
if (hexStr.length%2 != 0) {
return nil;
}
NSMutableData *data = [[[NSMutableData alloc] init] autorelease];
for (int i = 0 ; i<hexStr.length/2; i++) {
NSString *str = [hexStr substringWithRange:NSMakeRange(i*2,2)];
NSScanner *scanner = [NSScanner scannerWithString:str];
int intValue;
[scanner scanInt:&intValue];
[data appendBytes:&intValue length:1];
}
return data;
}
3、Data 2 Base64