将给定的二进制转换为其等效的 ASCII字符的字符串
给定一个二进制字符串str ,任务是找到其等效的字符串。
例子:
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.
方法:这个问题是基于实现的问题。请按照以下步骤解决给定的问题。
- 首先,检查 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)