swift中八进制数的处理
我可以很容易地将十进制数转换成八进制数,但我正试图做相反的事情,我被卡住了swift中八进制数的处理,swift,octal,Swift,Octal,我可以很容易地将十进制数转换成八进制数,但我正试图做相反的事情,我被卡住了 let decimal = 11_224_393 let octString = String(rawAddress, radix: 8, uppercase: false) let octal = octString.toInt() 问题 我想要一个函数,给定一个八进制数字的整数,它将把它作为八进制读入,并将它转换成十进制 例如: // oct2dec(777) = 511 // oct2dec(10) = 8 f
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
在我的选项中,使用字符串转换函数非常可怕。不如换成这样:
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本机和初始值设定项(|)
对于您的特定用例:
let decimal = 11_224_393
let octString = String(rawAddress, radix: 0o10, uppercase: false)
guard let octal = Int(octString, radix: 0o10) else {
print("octString was not a valid octal string:", octString)
}
只需使用Swift本机和初始值设定项(|)
对于您的特定用例:
let decimal = 11_224_393
let octString = String(rawAddress, radix: 0o10, uppercase: false)
guard let octal = Int(octString, radix: 0o10) else {
print("octString was not a valid octal string:", octString)
}
您不应该认为
Int
具有任何特定的基数。在内存中,无论如何,它总是二进制的。在您的示例中,777
是十进制的777
,1411
是八进制的,1100001001
是二进制的,所有这些都是同时进行的。它不需要“转换”成八进制;你所需要做的就是确保字符串转换被告知使用哪个基数。你不应该认为Int
有任何特定的基数。在内存中,无论如何,它总是二进制的。在您的示例中,777
是十进制的777
,1411
是八进制的,1100001001
是二进制的,所有这些都是同时进行的。它不需要“转换”成八进制;你需要做的就是确保字符串转换被告知使用哪种基数。奇怪的是,我链接的string.init(:radix:)
的Swift文档声称它是在Xcode 9中引入的,有很多人使用它,所以它一定比Swift 4早。奇怪的是,我提交了string.init(:radix:)的Swift文档
我链接的声明是在Xcode 9中引入的,有很多人使用它,所以它一定比Swift 4旧。我已经提交了此文件,这是不必要的,因为此问题有标准库解决方案这是不必要的,因为此问题有标准库解决方案