十进制转二进制 八进制 十六进制

来源:互联网 发布:派对 知乎 编辑:程序博客网 时间:2024/05/19 03:46

网上看到一些十进制转16进制的代码都不怎么靠谱,还是自己写个得了,没有仔细测试,如果有问题请大大门口下留情,多多指导

#pragma mark 十进制转其他进制/** *@brief 十进制转其他进制 * *@param decimalNum 十进制数 *@param system 需要转成多少进制数 *@param  andInitStr 调用是传个空字符串@“”就可以,此字段只是为了保留递归调用时能在上一次计算的结果上递增 * @return 转化后的字符串 */+ (NSString *)decimalToOther:(int)decimalNum andSystem:(int)system andInitStr:(NSString *)str{    NSString *result = str;        int redundant;    int divisor;        redundant = decimalNum % system;    divisor = decimalNum / system;        NSString * (^numToStr)(int) = ^(int redundant){        NSString *redundantValue;        switch (redundant)        {            case 10:                redundantValue =@"A";break;            case 11:                redundantValue =@"B";break;            case 12:                redundantValue =@"C";break;            case 13:                redundantValue =@"D";break;            case 14:                redundantValue =@"E";break;            case 15:                redundantValue =@"F";break;            default:redundantValue = [[NSString alloc]initWithFormat:@"%i",redundant];                        }        return redundantValue;    };        result = [numToStr(redundant) stringByAppendingString:result];    if(divisor >= system){        [self decimalToOther:divisor andSystem:system andResult:@""];    }else{        result = [numToStr(divisor) stringByAppendingString:result];    }    return result;}测试结果:NSString *result = [selfdecimalToOther:64andSystem:2];结果:2014-01-15 15:44:39.353 HexText[4749:a0b] result:1000000NSString *result = [selfdecimalToOther:64andSystem:8];结果:2014-01-15 15:45:29.778 HexText[4767:a0b] result:100NSString *result = [selfdecimalToOther:64andSystem:16];结果:2014-01-15 15:46:27.927 HexText[4787:a0b] result:40

备注:如有正确之处请多多指出,或者andInitStr能用别的更好的方法替代,也能指出,多多交流,共同学习,谢谢

0 0