如何在Kotlin中获得Int的二进制表示

时间:2018-05-04 10:42:21

标签: kotlin binary bit

是否有一种方法可用于获取整数位的整数表示?例如,提供时: 0给出0 4给出100 22给出10110

5 个答案:

答案 0 :(得分:9)

方法1: 使用Integer.toBinaryString(a),其中a是Int。此方法来自Java平台,可以在Kotlin中使用。 在https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toBinaryString(int)

了解有关此方法的更多信息

注意:此方法适用于正整数和负整数。

方法2: 使用a.toString(2),其中a是Int,2是基数 注意:此方法仅适用于正整数。

答案 1 :(得分:3)

从Kotlin 1.3开始,可以通过将有符号整数重新解释为无符号整数并将其转换为基于字符串2的方式来获得二进制表示形式:

a.toUInt().toString(radix = 2)

答案 2 :(得分:2)

我想要一个输出整数所有位的32位二进制表示的函数。其他答案中提到的标准库函数不会执行此操作。但是,可以通过结合Rashi Karanpuria指出的Integer.toBinaryString()与Kotlin stdlib函数padStart()来完成:

fun Int.to32bitString(): String =
    Integer.toBinaryString(this).padStart(Int.SIZE_BITS, '0')

fun main() {
    println(Int.MIN_VALUE.to32bitString())
    println((-1).to32bitString())
    println(0.to32bitString())
    println(1.to32bitString())
    println(Int.MAX_VALUE.to32bitString())
}

输出:

10000000000000000000000000000000
11111111111111111111111111111111
00000000000000000000000000000000
00000000000000000000000000000001
01111111111111111111111111111111

答案 3 :(得分:1)

我正在使用此方法将整数转换为二进制,

fun Int.toBinary(len: Int): String {
    return String.format("%" + len + "s", this.toString(2)).replace(" ".toRegex(), "0")
}

像这样调用此方法, numberToBeConvert.toBinary(length)

4.toBinary(8) = 00000100

答案 4 :(得分:0)

如果数字大于整数,则可以使用BigInteger。

val binaryString = BigInteger("12345678987654321").toString(2)