
42
|
第
2
章
val longSum = 3L + intVar
加号操作符自动将 intVar 的值转型为 long 并将其与一个 long 字面值相加。
2.5
打印不同的进制
问题
如何以二进制打印数字。
解决方案
为有效的进制使用扩展函数 toString(radix: Int)。
讨论
本节内容适用于不常出现的特殊情况。不过这会很有趣,而且如果你要处理其
他进制这可能会很有用。
有一个笑话:
世界上有 10 种人,懂二进制的和不懂二进制的。
在 Java 中,如果你想要将一个数字打印为二进制,你可能会使用静态方法 Integer.
toBinaryString 或 Integer.toString(int, int)。第一个参数是待转换的值,
第二个参数是进制。
但是,Kotlin 使用 Java 中的静态方法,并使其成为 Byte、Short、Int 以及 Long 的
扩展函数 toString(radix :Int)。例如,将数字 42 转换为 Kotlin 中的二进制字符
串,可以参照示例 2-25 来编写代码:
示例 2-25:用二进制打印 42
42.toString(2) == "101010"
在二进制中,每个位从左到右依次是 1、2、4、8、16,以此类推。由于 42=2 + 8 + 32,
所以这些位的位置为 1,其他位置为 0。
Int 中的 toString 方法的实现如下所示: