在 Kotlin 中,将二进制数转换为十进制数可以通过以下几种方法实现:
toInt(radix: Int)
函数toInt(radix: Int)
函数可以将一个字符串表示的数字转换为整数,其中 radix
参数指定进制。
fun binaryToDecimal(binaryString: String): Int {
return binaryString.toInt(2)
}
fun main() {
val binaryString = "1101"
val decimalNumber = binaryToDecimal(binaryString)
println("Binary $binaryString in decimal is $decimalNumber")
}
你也可以手动将二进制数转换为十进制数,通过遍历每一位并累加其值。
fun binaryToDecimalManual(binaryString: String): Int {
var decimalNumber = 0
for (i in binaryString.length - 1 downTo 0) {
if (binaryString[i] == '1') {
decimalNumber += Math.pow(2.0, (binaryString.length - 1 - i).toDouble()).toInt()
}
}
return decimalNumber
}
fun main() {
val binaryString = "1101"
val decimalNumber = binaryToDecimalManual(binaryString)
println("Binary $binaryString in decimal is $decimalNumber")
}
BigInteger
对于非常大的二进制数,可以使用 BigInteger
类来处理。
import java.math.BigInteger
fun binaryToDecimalBigInt(binaryString: String): BigInteger {
return BigInteger(binaryString, 2)
}
fun main() {
val binaryString = "1101"
val decimalNumber = binaryToDecimalBigInt(binaryString)
println("Binary $binaryString in decimal is $decimalNumber")
}
toInt(radix: Int)
函数会抛出 NumberFormatException
。可以通过正则表达式验证输入格式。fun isValidBinaryString(binaryString: String): Boolean {
return binaryString.matches(Regex("[01]+"))
}
fun main() {
val binaryString = "1101a"
if (isValidBinaryString(binaryString)) {
val decimalNumber = binaryToDecimal(binaryString)
println("Binary $binaryString in decimal is $decimalNumber")
} else {
println("Invalid binary string")
}
}
Int
可能会导致溢出。可以使用 Long
或 BigInteger
来处理大数。通过这些方法,你可以有效地将二进制数转换为十进制数,并根据具体需求选择合适的方法。
领取专属 10元无门槛券
手把手带您无忧上云