首页 >社区问答列表 >objective-c - OC中怎样将十六进制转化为十进制

objective-c - OC中怎样将十六进制转化为十进制

怎样将十六进制数转化为十进制数啊

  • 黄舟
  • 黄舟    2017-04-28 09:08:191楼

    自定义转换方法的原理:

    十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
    所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方.
    假设有一个十六进数 2AF5,那么如何换算成10进制呢?
    用竖式计算:2AF5换算成10进制:
    第0位:5 * 16^0 = 5
    第1位:F * 16^1 = 240
    第2位:A * 16^2 = 2560
    第3位:2 * 16^3 = 8192 +

    C函数提供的方法:

    iOS 十六进制字符串 转 十进制
    
    UInt64 mac1 =  strtoul([@"abcd1234" UTF8String], 0, 16);
    
    如果在有溢出,使用下面方法:    
    
    unsigned long long result = 0;
        NSScanner *scanner = [NSScanner scannerWithString:@"abcd12345678"];
        [scanner scanHexLongLong:&result];
    

    +0添加回复

  • 回复