我可以很容易地把一个十进制数变成一个八进制数,但我正试图做相反的事,我已经卡住了。

let decimal = 11_224_393
let octString = String(rawAddress, radix: 8, uppercase: false)
let octal = octString.toInt()

问题
我想要一个函数,给定一个整数的八进制数,将它作为八进制数读入并转换成十进制数。
例如:
// oct2dec(777) = 511
// oct2dec(10) = 8

func oct2dec(octal : Int) -> Int {
    // what goes here?
}

最佳答案

在我的选择中,使用字符串转换函数非常糟糕。不如这样吧:

func octalToDecimal(var octal: Int) -> Int {
    var decimal = 0, i = 0
    while octal != 0 {
        var remainder = octal % 10
        octal /= 10
        decimal += remainder * Int(pow(8, Double(i++)))
    }
    return decimal
}

var decimal = octalToDecimal(777) // decimal is 511

关于swift - 快速处理八进制数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28745242/

10-10 04:55