在java里面转个进制真是十分方便,调个函数就行,但是在ios中,为啥没找到,算啦,还是自己写个2进制转换到十六进制的代码

(*^__^*) 大一的时候真是傻乎乎,天天手动算==

网上看到一个人计算的时候是先转成浮点数来算的。。其实也可以,但是这样的话二进制的字符串不能太长是个弊端。

字典很方便来搞。

ios进制转换_字符串


ios进制转换_字符串_02

ios进制转换_字符串_02


话说看到这种清新的图片颜色搭配就喜欢的不要不要的怎么破。。。(*^__^*) 怀着愉悦的心情写好了算法


注意两点:一是前面增加多少个0,二是转换之后最前面的0去掉。

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic,strong) NSDictionary * dict;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSDictionary *dict = @{
                           @"0000":@"0",
                           @"0001":@"1",
                           @"0010":@"2",
                           @"0011":@"3",
                           @"0100":@"4",
                           @"0101":@"5",
                           @"0110":@"6",
                           @"0111":@"7",
                           @"1000":@"8",
                           @"1001":@"9",
                           @"1010":@"A",
                           @"1011":@"B",
                           @"1100":@"C",
                           @"1101":@"D",
                           @"1110":@"E",
                           @"1111":@"F"};

    self.dict = dict;
//    NSLog(@"result is %@", [self turn2to16:@"0010001011000111000011011000101000011"]);
    NSLog(@"result is %@", [self turn2to16:@"00010101"]);
}

//先判断字符串的长度,如果%4差几的话,就在前面补4减去几个0
//然后根据数组来进行匹配
-(NSString *)turn2to16:(NSString *)beforeStr{

    int i = beforeStr.length %4;
    i = 4 - i;
    for (int j =1 ; j<=i; j++) {
        beforeStr = [NSString stringWithFormat:@"0%@",beforeStr];
        
    }
    NSString *resultStr ;
    for (int i = 0; i < beforeStr.length/4; i++) {
        int j = i *4;
        NSString *keyStr = [beforeStr substringWithRange:NSMakeRange(j, 4)];
        if (j == 0) {
            resultStr = [self.dict objectForKey:keyStr];
            if([resultStr isEqualToString:@"0"])
                resultStr =@"";
        }else
            resultStr =[NSString stringWithFormat:@"%@%@",resultStr,[self.dict objectForKey:keyStr]];
    }
    return resultStr;
}