iOS字符处理BTString

#import <Foundation/Foundation.h>


@interface BTString : NSObject

+(BTString *)share;

/**data转换为十六进制的string*/

- (NSString *)hexStringFromData:(NSData *)myD;

/** 十六进制字符串转data*/

-(NSData *)byteDataWithHexString:(NSString *)hexString;

/**16进制转10进制

 @param hexString 16进制字符串

 @return 10进制字符串

 */

-(NSString *)sixStrFromeHexString:(NSString *)hexString;


/**10进制转16进制

 @param decimal 10进制数字

 @return 16进制字符串

 */

- (NSString *)hexStringFromSixInt:(NSInteger)decimal;

/** 字符串一个一个分开转*/

- (NSString *)hexStringFromSixString:(NSString*)decimal;

@end


#import "BTString.h"


@implementation BTString

//创建一个单例

static BTString *dbManger=nil;

+(BTString *)share

{

    @synchronized(self){

        if (nil==dbManger) {

            dbManger=[[BTString alloc]init];

        }

        return dbManger;

    }

}

/**data转换为十六进制的string*/

- (NSString *)hexStringFromData:(NSData *)myD{

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

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

    NSString *hexStr=@"";

    for(int i=0;i<[myD length];i++){

        NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16进制数

        if([newHexStr length]==1){

            

            hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];

        }else{

            

            hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];

        }

    }

    return hexStr;

}

/** 十六进制字符串转data*/

-(NSData *)byteDataWithHexString:(NSString *)hexString{

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

        return nil;

    }

    NSMutableData* data = [NSMutableData data];

    int idx;

    for (idx = 0; idx+2 <= hexString.length; idx+=2) {

        NSRange range = NSMakeRange(idx, 2);

        NSString* hexStr = [hexString substringWithRange:range];

        NSScanner* scanner = [NSScanner scannerWithString:hexStr];

        unsigned int intValue;

        [scanner scanHexInt:&intValue];

        [data appendBytes:&intValue length:1];

    }

    return data;

}

/**16进制转10进制*/

-(NSString *)sixStrFromeHexString:(NSString *)hexString{

     NSString * temp10 = [NSString stringWithFormat:@"%lu",strtoul([hexString UTF8String],0,16)];

    return temp10;

}

/**10进制转16进制*/

- (NSString *)hexStringFromSixInt:(NSInteger)decimal{

    return  [self hexStrFromSixInt:decimal];

}

- (NSString *)hexStringFromSixString:(NSString*)sixString{

    NSString * hexString = @"";

    for(int i=0;i<sixString.length;i++){

        NSString * tempStr = [sixString substringWithRange:NSMakeRange(i, 1)];

        NSString * hexStr = [self hexStrFromSixInt:[tempStr intValue]];

        hexString = [hexString stringByAppendingString:hexStr];

    }

    return hexString;

}

- (NSString *)hexStrFromSixInt:(NSInteger)decimal{

    

    NSString *hex =@"";

    NSString *letter;

    NSInteger number;

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

        number = decimal % 16;

        decimal = decimal / 16;

        switch (number) {

            case 10:

                letter =@"a"; break;

            case 11:

                letter =@"b"; break;

            case 12:

                letter =@"c"; break;

            case 13:

                letter =@"d"; break;

            case 14:

                letter =@"e"; break;

            case 15:

                letter =@"f"; break;

            default:

                letter = [NSString stringWithFormat:@"%ld", (long)number];

        }

        hex = [letter stringByAppendingString:hex];

        if (decimal == 0) {

            

            break;

        }

    }

    if (hex.length == 1) {

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

    }

    return hex;

}

@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值