zoukankan      html  css  js  c++  java
  • 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] != '')

            {

                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;

    }

  • 相关阅读:
    Dapper and Repository Pattern in MVC
    在linux中使用多个redis端口来构建redis集群
    搭建Sql Server AlwaysOn 视频教程
    支付宝支付插件使用文档
    NopCommerce添加事务机制
    NopCommerce(3.9)作业调度插件
    微信扫码支付插件使用文档
    生成HTML表格的后台模板代码
    json字符串和字典类型的相互转换
    NopCommerce适应多数据库方案
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5899914.html
Copyright © 2011-2022 走看看