如何在Swift中将八进制转换为十进制

3

你好,我想在Swift中将一个八进制数字转换为十进制。有什么简单的方法吗?


可能是在Swift中处理八进制数字的重复问题。 - pableiros
2个回答

6

从八进制到十进制

有一个特定的Int初始化器可以实现此功能。

let octal = 10
if let decimal = Int(String(octal), radix: 8) {
    print(decimal) // 8
}

从十进制转换为八进制

let decimal = 8
if let octal = Int(String(decimal, radix: 8)) {
    print(octal) // 10
}
注意1:请注意,这两个代码片段中的括号是不同的。 注意2:使用更奇异基数表示的数字的字符串形式可能使Int初始化器失败。请阅读下面@AMomchilov 的评论。

太棒了,你知道如何做相反的操作吗?谢谢 :) - user190494
@user190494 要将十进制转换为八进制吗? - Alexander
好的,兄弟,将十进制转换为八进制。谢谢。 - user190494
4
记住:数字没有基数。 基数是必要的,以指定一种将数字格式化为人类可解释的方式。 由这些字符串表示表达的数量存在于所有基数和字符串表示之外。 - Alexander
1
@appzYourLife 我相当确定Int初始化程序可能会因数字的字符串表示形式具有更奇异的基数而失败。无论如何,您都不需要进行Int转换,您可以直接打印String(_:, radix:)调用的结果。 - Alexander
@AMomchilov: 是的,这是有道理的。我在我的答案中添加了一条注释,谢谢。 - Luca Angeletti

1
你可以轻松地将八进制转换为十进制。Swift原生支持八进制语法,你需要在八进制数字前加上"0o"。
let number = 0o10
print(number) // it prints the number 8 in decimal

整型字面值

整型字面值表示未指定精度的整数值。默认情况下,整型字面值使用十进制表示;您可以使用前缀指定其他基数。二进制字面值以0b开头,八进制字面值以0o开头,十六进制字面值以0x开头。

这里是文档的参考

希望它能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接