📌  相关文章
📜  将给定的二进制转换为其等效的 ASCII字符的字符串

📅  最后修改于: 2022-05-13 01:56:04.837000             🧑  作者: Mango

将给定的二进制转换为其等效的 ASCII字符的字符串

给定一个二进制字符串str ,任务是找到其等效的字符串。

例子:

方法:这个问题是基于实现的问题。请按照以下步骤解决给定的问题。

  • 首先,检查 s 是否能被8整除
    • 如果不能被8整除,则打印“不可能”
    • 否则,进行下一步
  • 声明一个空字符串来存储所有的字符串。
  • 8个字符的跳转遍历s ,并在每一步中找到当前 8 位集合的十进制等效值。
  • 将十进制值转换为其等效的 ASCII字符并将其附加到res字符串。
  • 返回res字符串。

下面是上述方法的实现:

C++14
// C++ implementation for above approach
#include 
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


输出
ab

时间复杂度: O(N)
辅助空间: O(1)