Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Program to convert given Binary to its equivalent ASCII character string

  • Last Updated : 14 Dec, 2021

Given a binary string str, the task is to find its equivalent ASCII character string.

Examples: 

Input: str = “0110000101100010”
Output: ab
Explanation: Dividing str into set of 8 bits as follows: 

  • 01100001 = 97, ASCII value of 97 is ‘a’.
  • 01100010 = 98, ASCII value of 98 is ‘b’.

Therefore, the required ASCII character string is “ab”.

Input: str = “10000101100”
Output: Not Possible
Explanation: The given binary string is not a valid string as the number of characters is not a multiple of 8.

 

Approach: This problem is implementation-based problem. Follow the steps below to solve the given problem. 

  • At first, check if s is divisible by 8 or not
    • If not divisible by 8 print “Not Possible”
    • Otherwise, move to the next step
  • Declare an empty string to store all the ASCII character string.
  • Traverses in a jump of 8 characters and in each step find the decimal equivalent value of the current set of 8 bits.
  • Convert the decimal value to its equivalent ASCII character and append it to the res string.
  • Return the res string.

Below is the implementation of the above approach:

C++14




// C++ implementation for above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to convert binary to decimal
int binaryToDecimal(string n)
{
    string num = n;
 
    // Stores the decimal value
    int dec_value = 0;
 
    // Initializing base value to 1
    int base = 1;
 
    int len = num.length();
    for (int i = len - 1; i >= 0; i--) {
 
        // If the current bit is 1
        if (num[i] == '1')
            dec_value += base;
        base = base * 2;
    }
 
    // Return answer
    return dec_value;
}
 
// Function to convert binary to ASCII
string setStringtoASCII(string str)
{
    // To store size of s
    int N = int(str.size());
 
    // If given string is not a
    // valid string
    if (N % 8 != 0) {
        return "Not Possible!";
    }
 
    // To store final answer
    string res = "";
 
    // Loop to iterate through string
    for (int i = 0; i < N; i += 8) {
        int decimal_value
            = binaryToDecimal((str.substr(i, 8)));
 
        // Apprend the ASCII character
        // equivalent to current value
        res += char(decimal_value);
    }
 
    // Return Answer
    return res;
}
 
// Driver Code
int main()
{
    string s = "0110000101100010";
    cout << setStringtoASCII(s);
 
    return 0;
}

Java




// Java implementation for above approach
import java.util.*;
 
class GFG
{
 
// Function to convert binary to decimal
static int binaryToDecimal(String n)
{
    String num = n;
 
    // Stores the decimal value
    int dec_value = 0;
 
    // Initializing base value to 1
    int base = 1;
 
    int len = num.length();
    for (int i = len - 1; i >= 0; i--) {
 
        // If the current bit is 1
        if (num.charAt(i) == '1')
            dec_value += base;
        base = base * 2;
    }
 
    // Return answer
    return dec_value;
}
 
// Function to convert binary to ASCII
static String setStringtoASCII(String str)
{
   
    // To store size of s
    int N = (str.length());
 
    // If given String is not a
    // valid String
    if (N % 8 != 0) {
        return "Not Possible!";
    }
 
    // To store final answer
    String res = "";
 
    // Loop to iterate through String
    for (int i = 0; i < N; i += 8) {
        int decimal_value
            = binaryToDecimal((str.substring(i, 8+i)));
 
        // Apprend the ASCII character
        // equivalent to current value
        res += (char)(decimal_value);
    }
 
    // Return Answer
    return res;
}
 
// Driver Code
public static void main(String[] args)
{
    String s = "0110000101100010";
    System.out.print(setStringtoASCII(s));
 
}
}
 
// This code is contributed by 29AjayKumar

Python3




# python implementation for above approach
 
# Function to convert binary to decimal
def binaryToDecimal(n):
    num = n
 
    # Stores the decimal value
    dec_value = 0
 
    # Initializing base value to 1
    base = 1
 
    le = len(num)
    for i in range(le - 1, -1, -1):
 
        # If the current bit is 1
        if (num[i] == '1'):
            dec_value += base
        base = base * 2
 
    # Return answer
    return dec_value
 
# Function to convert binary to ASCII
def setStringtoASCII(str):
 
    # To store size of s
    N = int(len(str))
 
    # If given string is not a
    # valid string
    if (N % 8 != 0):
        return "Not Possible!"
 
        # To store final answer
    res = ""
 
    # Loop to iterate through string
    for i in range(0, N, 8):
        decimal_value = binaryToDecimal(str[i: i + 8])
 
        # Apprend the ASCII character
        # equivalent to current value
        res += chr(decimal_value)
 
        # Return Answer
    return res
 
# Driver Code
if __name__ == "__main__":
 
    s = "0110000101100010"
    print(setStringtoASCII(s))
 
    # This code is contributed by rakeshsahni

C#




// C# implementation for above approach
using System;
 
class GFG {
 
    // Function to convert binary to decimal
    static int binaryToDecimal(string n)
    {
        string num = n;
 
        // Stores the decimal value
        int dec_value = 0;
 
        // Initializing base value to 1
        int base1 = 1;
 
        int len = num.Length;
        for (int i = len - 1; i >= 0; i--) {
 
            // If the current bit is 1
            if (num[i] == '1')
                dec_value += base1;
            base1 = base1 * 2;
        }
 
        // Return answer
        return dec_value;
    }
 
    // Function to convert binary to ASCII
    static string setStringtoASCII(string str)
    {
 
        // To store size of s
        int N = (str.Length);
 
        // If given String is not a
        // valid String
        if (N % 8 != 0) {
            return "Not Possible!";
        }
 
        // To store final answer
        string res = "";
 
        // Loop to iterate through String
        for (int i = 0; i < N; i += 8) {
            int decimal_value
                = binaryToDecimal((str.Substring(i, 8)));
 
            // Apprend the ASCII character
            // equivalent to current value
            res += (char)(decimal_value);
        }
 
        // Return Answer
        return res;
    }
 
    // Driver Code
    public static void Main(string[] args)
    {
        string s = "0110000101100010";
        Console.WriteLine(setStringtoASCII(s));
    }
}
 
// This code is contributed by ukasp.

Javascript




<script>
 
// JavaScript implementation for above approach
 
// Function to convert binary to decimal
function binaryToDecimal(n)
{
    let num = n;
 
    // Stores the decimal value
    let dec_value = 0;
 
    // Initializing base value to 1
    let base = 1;
 
    let len = n.length;
    for(let i = len - 1; i >= 0; i--)
    {
         
        // If the current bit is 1
        if (n[i] == '1')
            dec_value += base;
             
        base = base * 2;
    }
 
    // Return answer
    return dec_value;
}
 
// Function to convert binary to ASCII
function setStringtoASCII(str)
{
     
    // To store size of s
    let N = str.length;
 
    // If given string is not a
    // valid string
    if (N % 8 != 0)
    {
        return "Not Possible!";
    }
 
    // To store final answer
    let res = "";
 
    // Loop to iterate through string
    for(let i = 0; i < N; i = i + 8)
    {
        let decimal_value = binaryToDecimal(
            (str.slice(i, i + 8)));
 
        // Apprend the ASCII character
        // equivalent to current value
        res = res + String.fromCharCode(decimal_value);
    }
 
    // Return Answer
    return res;
}
 
// Driver Code
let s = "0110000101100010";
document.write(setStringtoASCII(s));
 
// This code is contributed by Potta Lokesh
 
</script>
Output
ab

Time Complexity: O(N)
Auxiliary Space: O(1)

 


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!