Skip to content
Related Articles

Related Articles

Converting Binary To Octal number using HashMap in Java
  • Last Updated : 17 Mar, 2021

Remember while we were converting octal to decimal we were taking 3 binary digits at a time. A similar approach will be used where here for every 3 digits we are having a corresponding number as in octal system we have numbers from 0 to ‘R-1’ where R represents base value of number system. As the name suggests, in an octal number system, R is equivalent to 8. Hence, the number is as follows: 0,1,2,3,4,5,6,7. 

Now going by virtue of HashMaps in converting one thing is clear from here that that one way or other binary equivalent and octal equivalent are going to act as key-value pairs in our HashMap.

OctalBinary
0000
1001
2010
3011
4100
5101
6110
7111

Algorithm:

  1. Convert the binary number into a decimal number.
  2. Using HashMap we map every bit with its decimal values.
  3. When the bit is found it maps with the decimal number
  4. Prints and display the octal equivalent of the number.

Illustration:

Input  1 : 1011
Output 1 :   13

Input  2 : 1000
Output 2 :   10

Implementation:



Example

Java




// Java Progeram to Convert Binary Number to Octal Number
  
// Importing all utility classes
import java.util.*;
  
// Main class
pubic class GFG {
  
    // Mehod 1
    // Helper method
    public static void octal(String s)
    {
  
        // Here binary number is representedd by string 's'
        // over which standard length() method is computed
        // to get the length of binary number
  
        // Appending 2 zeros if bnary numbers leaves
        // remainder as 1 after dividing with 3
        if (s.length() % 3 == 1) {
  
            // Append  two zeros to it
            s = "00" + s;
        }
  
        // If binary string number length after equals 2
        else if (s.length() % 3 == 2) {
  
            // Concatinate string by adding 1 zero to it
            s = "0" + s;
        }
  
        // Creating an object of HashMap
        // Declaring object of String and Integer types
        HashMap<String, Integer> hm = new HashMap<>();
  
        // Adding elements to the object created above
        // using the put() method
  
        // Adding elements(key-value) pairs to given object
        // 000 in binary system  ->  0 in octal system
        // 001 in binary system  ->  1 in octal system
  
        // Similarly adding for 0 to N-1 (N=8 for octal)
        hm.put("000", 0);
        hm.put("001", 1);
        hm.put("010", 2);
        hm.put("011", 3);
        hm.put("100", 4);
        hm.put("101", 5);
        hm.put("110", 6);
        hm.put("111", 7);
  
        // Creating and declaring a string array
        String[] part = new String[3];
        int t = 0;
  
        // Iterating over the binary number digits
        for (int i = 0; i < s.length(); i = i + 3) {
  
            // Checking for substring in an binary number
            // gigit array
            String bypart = s.substring(i, i + 3);
            part[t] = bypart;
  
            // If found
            if (hm.containsKey(part[t])) {
  
                // Getting the part to be matched for
                // its corresponding octal numbers
                System.out.print(hm.get(part[t]));
            }
  
            // Incrementing the counter
            t++;
        }
    }
  
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
  
        // Display message 
        System.out.print("Enter the binary number to be converted : ");
        // Binary number to be converted
        // Custom entry  
        String s = 011;
          
        // Calling the method1 octal() over the
        // above input entered number
        octal(s);
        
        // Display message 
        System.out.print("Octal equivalent : ");
    }
}

Output:

Enter the binary number to be converted : 011
Octal equivalent : 3
My Personal Notes arrow_drop_up
Recommended Articles
Page :