Dada una string binaria str , la tarea es encontrar su string de caracteres ASCII equivalente.
Ejemplos:
Entrada: str = “0110000101100010”
Salida: ab
Explicación: Dividir str en un conjunto de 8 bits de la siguiente manera:
- 01100001 = 97, el valor ASCII de 97 es ‘a’.
- 01100010 = 98, el valor ASCII de 98 es ‘b’.
Por lo tanto, la string de caracteres ASCII requerida es «ab».
Entrada: str = “10000101100”
Salida: No es posible
Explicación: La string binaria dada no es una string válida ya que el número de caracteres no es un múltiplo de 8.
Enfoque: Este problema es un problema basado en la implementación. Siga los pasos a continuación para resolver el problema dado.
- En primer lugar, compruebe si s es divisible por 8 o no
- Si no es divisible por 8 , escriba «No es posible»
- De lo contrario, vaya al siguiente paso
- Declare una string vacía para almacenar toda la string de caracteres ASCII.
- Recorre s en un salto de 8 caracteres y en cada paso encuentra el valor equivalente decimal del conjunto actual de 8 bits.
- Convierta el valor decimal a su carácter ASCII equivalente y agréguelo a la string res .
- Devuelve la string res .
A continuación se muestra la implementación del enfoque anterior:
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>
ab
Complejidad de tiempo: O (N), ya que estamos usando un bucle para atravesar N veces, por lo que nos costará O (N) tiempo.
Espacio Auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por bhukyavasanthkumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA