博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios十进制、十六进制字符串,byte,data等之间的转换
阅读量:5105 次
发布时间:2019-06-13

本文共 4635 字,大约阅读时间需要 15 分钟。

十进制->十六进制

 

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

你可能感兴趣的文章
webView添加头视图
查看>>
php match_model的简单使用
查看>>
在NT中直接访问物理内存
查看>>
Intel HEX 文件格式
查看>>
SIP服务器性能测试工具SIPp使用指导(转)
查看>>
php_扑克类
查看>>
回调没用,加上iframe提交表单
查看>>
(安卓)一般安卓开始界面 Loding 跳转 实例 ---亲测!
查看>>
Mysql 索引优化 - 1
查看>>
LeetCode(3) || Median of Two Sorted Arrays
查看>>
大话文本检测经典模型:EAST
查看>>
待整理
查看>>
一次动态sql查询订单数据的设计
查看>>
C# 类(10) 抽象类.
查看>>
Nginx+Keepalived 实现双击热备及负载均衡
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
我对前端MVC的理解
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>