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;
    }
  • 相关阅读:
    CDQ分治入门
    BSGS算法初探
    简析平衡树(三)——浅谈Splay
    简析平衡树(一)——替罪羊树 Scapegoat Tree
    NOIP2018初赛 解题报告
    【BZOJ1101】[POI2007] Zap(莫比乌斯反演)
    WQS二分学习笔记
    【洛谷2664】树上游戏(点分治)
    同余问题(一)——扩展欧几里得exgcd
    二叉搜索树(BST)学习笔记
  • 原文地址:https://www.cnblogs.com/gulong/p/4993829.html
Copyright © 2011-2022 走看看