ios十进制、十六进制字符串,byte,data等之间的转换

十进制->十六进制

Byte bytes[]={0xA6,0x27,0x0A};

NSString *strIdL = [NSStringstringWithFormat:@"%@",[[NSStringalloc]initWithFormat:@"%02lx",(long)bytes[0]]];

十六进制->十进制

NSString *rechargeInfo = @“0xff055008”;

NSString *cardId2 = [rechargeInfosubstringWithRange:NSMakeRange(2,2)];

cardId2 = [NSStringstringWithFormat:@"%ld",strtoul([cardId2UTF8String],0,16)];

NSString
*str = @“0xff055008”;

//先以16为参数告诉strtoul字符串参数表示16进制数字,然后使用0x%X转为数字类型

unsignedlongred
= strtoul([str UTF8String],0,16);

//strtoul如果传入的字符开头是“0x”,那么第三个参数是0,也是会转为十六进制的,这样写也可以:

unsignedlongred
= strtoul([@"0x6587"UTF8String],0,0);

NSLog(@“转换完的数字为:%lx”,red);
#pragma mark --字符串处理方法

//字符串处理方法

+(NSString *)cutString:(NSString *)str{

NSString *targetStr=nil;

if (str.length>9) {

    targetStr=[str substringFromIndex:9];

    

}

return targetStr;

}

+(NSString *)transToStr:(NSData *)data{

NSString *str=[NSStringstringWithFormat:@"%@",data];

return str;

}

//字符串补零操作

+(NSString *)addZero:(NSString *)str withLength:(int)length{

NSString *string = nil;

if (str.length==length) {

    return str;

}

if (str.length<length) {

    NSUInteger inter = length-str.length;

    for (int i=0;i< inter; i++) {

        string = [NSString stringWithFormat:@"0%@",str];

        str = string;

    }

}

return string;

}

+(NSString *)stringFromHexString:(NSString *)hexString {//

char *myBuffer = (char *)malloc((int)[hexStringlength] / 2 +1);

bzero(myBuffer, [hexString length] / 2 + 1);

for (int i =0; i < [hexString length] - 1; i += 2) {

    unsigned int anInt;

    NSString * hexCharStr = [hexString substringWithRange:NSMakeRange(i, 2)];

    NSScanner * scanner = [[NSScanneralloc] initWithString:hexCharStr] ;

    [scanner scanHexInt:&anInt];

    myBuffer[i / 2] = (char)anInt;

    NSLog(@"myBuffer is %c",myBuffer[i /2] );

}

NSString *unicodeString = [NSStringstringWithCString:myBuffer encoding:4];

NSLog(@"———字符串=======%@",unicodeString);

return unicodeString; 

}

//10进制转16进制

+(NSString *)ToHex:(longlong int)tmpid

{

NSString *nLetterValue;

NSString *str =@"";

long longint ttmpig;

for (int i =0; i<9; i++) {

    ttmpig=tmpid%16;

    tmpid=tmpid/16;

    switch (ttmpig)

    {

        case 10:

            nLetterValue =@"A";break;

        case 11:

            nLetterValue =@"B";break;

        case 12:

            nLetterValue =@"C";break;

        case 13:

            nLetterValue =@"D";break;

        case 14:

            nLetterValue =@"E";break;

        case 15:

            nLetterValue =@"F";break;

        default:nLetterValue=[[NSStringalloc]initWithFormat:@"%lli",ttmpig];

            

    }

    str = [nLetterValue stringByAppendingString:str];

    if (tmpid == 0) {

        break;

    }

    

}

return str;

}

//将16进制的字符串转换成NSData

  • (NSMutableData *)convertHexStrToData:(NSString *)str {

    if (!str || [str length] == 0) {

      return nil;
    

    }

    NSMutableData *hexData = [[NSMutableDataalloc] initWithCapacity:8];

    NSRange range;

    if ([str length] %2 == 0) {

      range = NSMakeRange(0,2);
    

    } else {

      range = NSMakeRange(0,1);
    

    }

    for (NSInteger i = range.location; i < [strlength]; i += 2) {

      unsigned int anInt;
    
      NSString *hexCharStr = [str substringWithRange:range];
    
      NSScanner *scanner = [[NSScanneralloc] initWithString:hexCharStr];
    
      
    
      [scanner scanHexInt:&anInt];
    
      NSData *entity = [[NSDataalloc] initWithBytes:&anIntlength:1];
    
      [hexData appendData:entity];
    
      
    
      range.location += range.length;
    
      range.length = 2;
    

    }

    return hexData;

}

  • (NSString *)convertDataToHexStr:(NSData *)data {

    if (!data || [data length] == 0) {

      return @"";
    

    }

    NSMutableString *string = [[NSMutableStringalloc] initWithCapacity:[datalength]];

    [data enumerateByteRangesUsingBlock:^(constvoid *bytes, NSRange byteRange,BOOL *stop) {

      unsigned char *dataBytes = (unsignedchar*)bytes;
    
      for (NSInteger i =0; i < byteRange.length; i++) {
    
          NSString *hexStr = [NSStringstringWithFormat:@"%x", (dataBytes[i]) &0xff];
    
          if ([hexStr length] == 2) {
    
              [string appendString:hexStr];
    
          } else {
    
              [string appendFormat:@"0%@", hexStr];
    
          }
    
      }
    

    }];

    return string;

}

//十进制准换为十六进制字符串

  • (NSString *)hexStringFromString:(NSString *)string{

    NSData *myD = [stringdataUsingEncoding:NSUTF8StringEncoding];

    Byte *bytes = (Byte *)[myDbytes];

    //下面是Byte转换为16进制。

    NSString *hexStr=@"";

    for(int i=0;i<[myDlength];i++)

    {

      NSString *newHexStr = [NSStringstringWithFormat:@"%x",bytes[i]&0xff];///16进制数
    
      
    
      if([newHexStr length]==1)
    
          
    
          hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
    
      
    
      else
    
          
    
          hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr]; 
    

    }

    return hexStr;

}

+(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++;

    }

}

NSLog(@"bytes 的16进制数为:%@",hexStr);

return hexStr;

}

https://www.cnblogs.com/Free-Thinker/p/5899914.html

发布了138 篇原创文章 · 获赞 83 · 访问量 88万+

猜你喜欢

转载自blog.csdn.net/kunga0814/article/details/90735236
今日推荐