// NSString 转 16进制
- (NSString *) dataToHexString
{
NSUInteger len = [selflength];
char * chars = (char *)[selfbytes];
NSMutableString * hexString = [[NSMutableStringalloc] init];
for(NSUInteger i =0; i < len; i++ )
[hexString appendString:[NSStringstringWithFormat:@"%0.2hhx", chars[i]]];
return hexString;
}
// NSString 转 NSData
- (NSData *) stringToHexData
{
int len = (int)[selflength] / 2;// Target length
unsigned char *buf =malloc(len);
unsigned char *whole_byte = buf;
char byte_chars[3] = {'\0','\0','\0'};
int i;
for (i=0; i < [selflength] / 2; i++) {
byte_chars[0] = [selfcharacterAtIndex:i*2];
byte_chars[1] = [selfcharacterAtIndex:i*2+1];
*whole_byte = strtol(byte_chars, NULL, 16);
whole_byte++;
}
NSData *data = [NSDatadataWithBytes:buf length:len];
free( buf );
return data;
}
//byte数组 转换成NSString
-(NSString *) parseByteArray2HexString:(Byte[]) bytes
{
NSMutableString *hexStr = [[NSMutableString alloc]init];
int i = 0;
if(bytes)
{
while (bytes[i] != '\0')
{
NSString *hexByte = [NSString stringWithFormat:@"%x",bytes[i] & 0xff];///16进制数
if([hexByte length]==1)
[hexStr appendFormat:@"0%@", hexByte];
else
[hexStr appendFormat:@"%@", hexByte];
i++;
}
}
return hexStr;
}
-(NSData*) hexToBytes:(NSString *) string {
NSMutableData *data = [NSMutableData data];
int idx;
for (idx = 0; idx+2 <= string.length; idx+=2) {
NSRange range = NSMakeRange(idx, 2);
NSString* hexStr = [string substringWithRange:range];
NSScanner* scanner = [NSScanner scannerWithString:hexStr];
unsigned int intValue;
[scanner scanHexInt:&intValue];
[data appendBytes:&intValue length:1];
}
return data;
}
//NSData 转 NSString
-(NSString *) hexToBytes:(NSData *) KeyData {
NSString *hexStr=@"";
for(int i=0;i<[KeyData length];i++)
{
NSString *newHexStr = [NSString stringWithFormat:@"%x",mimabyte[i]&0xff];///16进制数
if([newHexStr length]==1)
hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
else
hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
}
return hexStr;