zoukankan      html  css  js  c++  java
  • 进制之间的转换

    1.1 十进制转2进制

    -(NSString *)binaryFromInteger:(NSInteger)index{
        NSString *str = @"";
        while (index != 1) {
            NSInteger two = index % 2;
            str = [NSString stringWithFormat:@"%ld%@",two,str];
            index /= 2;
        }
        return [NSString stringWithFormat:@"%ld%@",index,str];
    }

    1.2 十进制转8进制

    //十进制转八进制
    -(NSString *)octonaryFromInteger:(NSInteger)index{
        return [NSString stringWithFormat:@"%lo",index];
    }

    1.3 十进制转16进制

    -(NSString *)hexFromInteger:(NSInteger)index{
        return [NSString stringWithFormat:@"%lx",index];
    }

    2.1 2进制转十进制

    -(NSInteger)integerFromBinary:(NSString *)binary{
        
        NSInteger count = binary.length;
        NSInteger number = 0;
        for (NSInteger i = count; i > 0; i --) {
            NSInteger index = [[binary substringWithRange:NSMakeRange(i - 1, 1)] integerValue];
            number += index * powf(2, count - i);
        }
        
        return number;
    }

    2.2 8进制转十进制

    -(NSInteger)integerFromOctonary:(NSString *)octonary{
        
        NSInteger count = octonary.length;
        NSInteger number = 0;
        for (NSInteger i = count; i > 0; i --) {
            NSInteger index = [[octonary substringWithRange:NSMakeRange(i - 1, 1)] integerValue];
            number += index * powf(8, count - i);
        }
        
        return number;
    }

    2.3 16进制转十进制

    -(NSInteger)integerFromHex:(NSString *)hex{
        NSInteger count = hex.length;
        NSInteger number = 0;
        NSDictionary *dict = @{@"0":@"0",@"1":@"1",@"2":@"2",@"3":@"3",
                               @"4":@"4",@"5":@"5",@"6":@"6",@"7":@"7",
                               @"8":@"8",@"9":@"9",@"a":@"10",@"b":@"11",
                               @"c":@"12",@"d":@"13",@"e":@"14",@"f":@"15"};
        for (NSInteger i = count; i > 0; i --) {
            NSString *letter = [hex substringWithRange:NSMakeRange(i - 1, 1)];
            NSInteger index = [[dict objectForKey:[letter lowercaseString]] integerValue];
            number += index * powf(16, count - i);
        }
        return number;
    }
  • 相关阅读:
    [Go] 理解(*interface{})(nil) 赋值的变量是否为nil
    [Linux] 理解CPU缓存的伪共享问题
    [MySQL] 理解InnoDB并发高的原因
    [Go] 理解计算机负数的表示以及整数范围
    [Go]理解golang项目性能分析工具trace
    [Go]理解golang项目性能分析工具PProf
    [Go] 理解切片slice扩容
    [javascript]解决多个版本的jquery库或者$冲突
    [Linux] 理解Reactor 模型
    [Linux] 理解I/O多路复用
  • 原文地址:https://www.cnblogs.com/gulong/p/4993829.html
Copyright © 2011-2022 走看看