文本主要记录并描述Kotlin中二进制、八进制、十六进制之间的转换方法
二进制和十进制之间的转换 :
01.二进制转换为十进制:采用取余的方式获取位数,并利用Math.pow()方法进行计算
//二进制转换为十进制 val num: Long = 1000 val value = BinaryToHex(num) Log.i("hy55", "value==$value") val number = HexToBinary(10) Log.i("hy55", "number==$number") private fun BinaryToDecimal(value: Long): Int { var cValue = value var decimalNumber = 0 var remainder: Long var count = 0 while(cValue.toInt() != 0) { remainder = cValue % 10 cValue /= 10 //Math.pow()获取2的count.toDouble()次方 decimalNumber += (remainder * Math.pow(2.0, count.toDouble())).toInt() Log.i("BinaryToDecimal", "decimalNumber==$decimalNumber") ++count } return decimalNumber }
02.十进制转换为二进制:采用取余的方式获取位数
private fun DecimalToBinary(value: Int): Long { var cValue = value var remainder: Int var binaryNumber: Long = 0 var count = 1 while(cValue != 0) { remainder = cValue % 2 cValue /= 2 binaryNumber += (remainder * count).toLong() Log.i("DecimalToBinary", "remainder==$remainder") count *= 10 } return binaryNumber }
二进制和八进制之间的转换:
01.二进制转换为八进制:先转换为十进制
//二进制转换为八进制 private fun BinaryToOctal(value: Long): Int { var binaryNumber = value var octalNumber = 0 var decimalNumber = 0 var count = 0 //二进制转换为十进制 while(binaryNumber.toInt() != 0) { decimalNumber += (binaryNumber % 10 * Math.pow(2.0, count.toDouble())).toInt() ++count binaryNumber /= 10 } count = 1 //十进制转八进制 while (decimalNumber != 0) { octalNumber += decimalNumber % 8 * count decimalNumber /= 8 count *= 10 } return octalNumber }
02.八进制转换为二进制
//八进制转换为二进制 private fun OctalToBinary(value: Int): Long{ var octalNumber = value var decimalNumber = 0 var count = 0 var binaryNumber: Long = 0 //八进制转十进制 while (octalNumber != 0) { decimalNumber += (octalNumber % 10 * Math.pow(8.0, count.toDouble())).toInt() ++count octalNumber /= 10 } count = 1 //十进制转二进制 while (decimalNumber != 0) { binaryNumber += (decimalNumber % 2 * count).toLong() decimalNumber /= 2 count *= 10 } return binaryNumber }
二进制和十六进制之间的转换:
01.二进制转换为十六进制:先转换为十进制
//二进制转换为十六进制 private fun BinaryToHex(value: Long): Int { var binaryNumber = value var HexNumber = 0 var decimalNumber = 0 var count = 0 //二进制转换为十进制 while(binaryNumber.toInt() != 0) { decimalNumber += (binaryNumber % 10 * Math.pow(2.0, count.toDouble())).toInt() ++count binaryNumber /= 10 } count = 1 //十进制转十六进制 while (decimalNumber != 0) { HexNumber += decimalNumber % 16 * count decimalNumber /= 16 count *= 10 } return HexNumber }
02.十六进制转换为二进制:
//十六进制转换为二进制 private fun HexToBinary(value: Int): Long { var HexNumber = value var decimalNumber = 0 var count = 0 var binaryNumber: Long = 0 //十六进制转十进制 while (HexNumber != 0) { decimalNumber += (HexNumber % 10 * Math.pow(16.0, count.toDouble())).toInt() ++count HexNumber /= 10 } count = 1 //十进制转二进制 while (decimalNumber != 0) { binaryNumber += (decimalNumber % 2 * count).toLong() decimalNumber /= 2 count *= 10 } return binaryNumber }
总结:
01.重点掌握二进制和十进制之间的转换
02.灵活运用Math.pow()方法