Kotlin Program to Convert Binary Number to Octal and vice-versa

Example 1: Program to Convert Binary to Octal

In this program, we will first convert binary number to decimal. Then, the decimal number is converted to octal.

fun main(args: Array<String>) {
    val binary: Long = 101001
    val octal = convertBinarytoOctal(binary)
    println("$binary in binary = $octal in octal")
}

fun convertBinarytoOctal(binaryNumber: Long): Int {
    var binaryNumber = binaryNumber
    var octalNumber = 0
    var decimalNumber = 0
    var i = 0

    while (binaryNumber.toInt() != 0) {
        decimalNumber += (binaryNumber % 10 * Math.pow(2.0, i.toDouble())).toInt()
        ++i
        binaryNumber /= 10
    }

    i = 1

    while (decimalNumber != 0) {
        octalNumber += decimalNumber % 8 * i
        decimalNumber /= 8
        i *= 10
    }

    return octalNumber
}

When you run the program, the output will be:

101001 in binary = 51 in octal

This conversion takes place as:

Binary To Decimal
1 * 25 + 0 * 24 + 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 41

Decimal to Octal
8 | 41
8 | 5 -- 1
8 | 0 -- 5
(51)

Example 2: Program to Convert Octal to Binary

In this program, the octal number to decimal to decimal at first. Then, the decimal number is converted to binary number.

fun main(args: Array<String>) {
    val octal = 67
    val binary = convertOctalToBinary(octal)
    println("$octal in octal = $binary in binary")
}

fun convertOctalToBinary(octalNumber: Int): Long {
    var octalNumber = octalNumber
    var decimalNumber = 0
    var i = 0
    var binaryNumber: Long = 0

    while (octalNumber != 0) {
        decimalNumber += (octalNumber % 10 * Math.pow(8.0, i.toDouble())).toInt()
        ++i
        octalNumber /= 10
    }

    i = 1

    while (decimalNumber != 0) {
        binaryNumber += (decimalNumber % 2 * i).toLong()
        decimalNumber /= 2
        i *= 10
    }

    return binaryNumber
}

When you run the program, the output will be:

67 in octal = 110111 in binary

This conversion takes place as:

Octal To Decimal
6 * 81 + 7 * 80 = 55

Decimal to Binary
2 | 55
2 | 27 -- 1
2 | 13 -- 1
2 | 6  -- 1
2 | 3  -- 0
2 | 1  -- 1
2 | 0  -- 1
(110111)

Here's the equivalent Java code: Java Program to Convert Binary to Octal and vice-versa

Did you find this article helpful?

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community