Dado un número y su base, conviértelo a decimal. La base del número puede ser cualquier cosa tal que todos los dígitos se puedan representar usando del 0 al 9 y de la A a la Z. El valor de A es 10, el valor de B es 11 y así sucesivamente. Escribe una función para convertir el número a decimal.
Ejemplos:
Input number is given as string and output is an integer. Input: str = "1100", base = 2 Output: 12 Input: str = "11A", base = 16 Output: 282 Input: str = "123", base = 8 Output: 83
Le recomendamos encarecidamente que minimice su navegador y que pruebe esto usted mismo primero.
Siempre podemos usar la siguiente fórmula para convertir de cualquier base a decimal.
"str" is input number as a string "base" is the base of the input number. Decimal Equivalent is, 1*str[len-1] + base*str[len-2] + (base)2*str[len-3] + ...
A continuación se muestra la implementación de la fórmula anterior.
C++
// C++ program of th above approach #include <bits/stdc++.h> using namespace std; // To return char for a value. For example '2' // is returned for 2. 'A' is returned for 10. 'B' // for 11 char reVal(int num) { if (num >= 0 && num <= 9) return (char)(num + '0'); else return (char)(num - 10 + 'A'); } // Utility function to reverse a string void strev(char *str) { int len = strlen(str); int i; for (i = 0; i < len/2; i++) { char temp = str[i]; str[i] = str[len-i-1]; str[len-i-1] = temp; } } // Function to convert a given decimal number // to a base 'base' and char* fromDeci(char res[], int base, int inputNum) { int index = 0; // Initialize index of result // Convert input number is given base by repeatedly // dividing it by base and taking remainder while (inputNum > 0) { res[index++] = reVal(inputNum % base); inputNum /= base; } res[index] = '\0'; // Reverse the result strev(res); return res; } // Driver Code int main() { int inputNum = 282, base = 16; char res[100]; cout << "Equivalent of " << inputNum << "in base "<< base << "is " << fromDeci(res, base, inputNum); return 0; } // This code is contributed by code_hunt.
C
// C program to convert a number from any base // to decimal #include <stdio.h> #include <string.h> // To return value of a char. For example, 2 is // returned for '2'. 10 is returned for 'A', 11 // for 'B' int val(char c) { if (c >= '0' && c <= '9') return (int)c - '0'; else return (int)c - 'A' + 10; } // Function to convert a number from given base 'b' // to decimal int toDeci(char *str, int base) { int len = strlen(str); int power = 1; // Initialize power of base int num = 0; // Initialize result int i; // Decimal equivalent is str[len-1]*1 + // str[len-2]*base + str[len-3]*(base^2) + ... for (i = len - 1; i >= 0; i--) { // A digit in input number must be // less than number's base if (val(str[i]) >= base) { printf("Invalid Number"); return -1; } num += val(str[i]) * power; power = power * base; } return num; } // Driver code int main() { char str[] = "11A"; int base = 16; printf("Decimal equivalent of %s in base %d is " " %d\n", str, base, toDeci(str, base)); return 0; }
Java
// Java program to convert // a number from any base // to decimal import java.io.*; class GFG { // To return value of a char. // For example, 2 is returned // for '2'. 10 is returned // for 'A', 11 for 'B' static int val(char c) { if (c >= '0' && c <= '9') return (int)c - '0'; else return (int)c - 'A' + 10; } // Function to convert a // number from given base // 'b' to decimal static int toDeci(String str, int base) { int len = str.length(); int power = 1; // Initialize // power of base int num = 0; // Initialize result int i; // Decimal equivalent is // str[len-1]*1 + str[len-2] * // base + str[len-3]*(base^2) + ... for (i = len - 1; i >= 0; i--) { // A digit in input number // must be less than // number's base if (val(str.charAt(i)) >= base) { System.out.println("Invalid Number"); return -1; } num += val(str.charAt(i)) * power; power = power * base; } return num; } // Driver code public static void main (String[] args) { String str = "11A"; int base = 16; System.out.println("Decimal equivalent of "+ str + " in base "+ base + " is "+ " "+ toDeci(str, base)); } } // This code is contributed // by anuj_67.
Python3
# Python program to convert a # number from any base to decimal # To return value of a char. # For example, 2 is returned # for '2'. 10 is returned for 'A', # 11 for 'B' def val(c): if c >= '0' and c <= '9': return ord(c) - ord('0') else: return ord(c) - ord('A') + 10; # Function to convert a number # from given base 'b' to decimal def toDeci(str,base): llen = len(str) power = 1 #Initialize power of base num = 0 #Initialize result # Decimal equivalent is str[len-1]*1 + # str[len-2]*base + str[len-3]*(base^2) + ... for i in range(llen - 1, -1, -1): # A digit in input number must # be less than number's base if val(str[i]) >= base: print('Invalid Number') return -1 num += val(str[i]) * power power = power * base return num # Driver code strr = "11A" base = 16 print('Decimal equivalent of', strr, 'in base', base, 'is', toDeci(strr, base)) # This code is contributed # by Sahil shelangia
C#
// C# program to convert // a number from any base // to decimal using System; class GFG { // To return value of a char. // For example, 2 is returned // for '2'. 10 is returned // for 'A', 11 for 'B' static int val(char c) { if (c >= '0' && c <= '9') return (int)c - '0'; else return (int)c - 'A' + 10; } // Function to convert a // number from given base // 'b' to decimal static int toDeci(string str, int b_ase) { int len = str.Length; int power = 1; // Initialize // power of base int num = 0; // Initialize result int i; // Decimal equivalent is // str[len-1]*1 + str[len-2] * // base + str[len-3]*(base^2) + ... for (i = len - 1; i >= 0; i--) { // A digit in input number // must be less than // number's base if (val(str[i]) >= b_ase) { Console.WriteLine("Invalid Number"); return -1; } num += val(str[i]) * power; power = power * b_ase; } return num; } // Driver code public static void Main () { string str = "11A"; int b_ase = 16; Console.WriteLine("Decimal equivalent of "+ str + " in base "+ b_ase + " is " + toDeci(str, b_ase)); } } // This code is contributed // by anuj_67.
PHP
<?php // PHP program to convert a number from // any base to decimal // To return value of a char. For example, // 2 is returned for '2'. 10 is returned // for 'A', 11 for 'B' function val($c) { if ($c >= '0' && $c <= '9') return ord($c) - ord('0'); else return ord($c) - ord('A') + 10; } // Function to convert a number from given // base 'b' to decimal function toDeci($str, $base) { $len = strlen($str); $power = 1; // Initialize power of base $num = 0; // Initialize result // Decimal equivalent is str[len-1]*1 + // str[len-2]*base + str[len-3]*(base^2) + ... for ($i = $len - 1; $i >= 0; $i--) { // A digit in input number must be // less than number's base if (val($str[$i]) >= $base) { print("Invalid Number"); return -1; } $num += val($str[$i]) * $power; $power = $power * $base; } return $num; } // Driver code $str = "11A"; $base = 16; print("Decimal equivalent of $str " . "in base $base is " . toDeci($str, $base)); // This code is contributed by mits ?>
Javascript
<script> // Javascript program to convert // a number from any base // to decimal // To return value of a char. // For example, 2 is returned // for '2'. 10 is returned // for 'A', 11 for 'B' function val(c) { if (c >= '0'.charCodeAt() && c <= '9'.charCodeAt()) return (c - '0'.charCodeAt()); else return (c - 'A'.charCodeAt() + 10); } // Function to convert a // number from given base // 'b' to decimal function toDeci(str, b_ase) { let len = str.length; // Initialize // power of base let power = 1; // Initialize result let num = 0; let i; // Decimal equivalent is // str[len-1]*1 + str[len-2] * // base + str[len-3]*(base^2) + ... for(i = len - 1; i >= 0; i--) { // A digit in input number // must be less than // number's base if (val(str[i].charCodeAt()) >= b_ase) { document.write("Invalid Number"); return -1; } num += val(str[i].charCodeAt()) * power; power = power * b_ase; } return num; } // Driver code let str = "11A"; let b_ase = 16; document.write("Decimal equivalent of "+ str + " in base "+ b_ase + " is " + toDeci(str, b_ase)); // This code is contributed by divyesh072019 </script>
Producción :
Decimal equivalent of 11A in base 16 is 282
Complejidad de tiempo: O(N) n representa la longitud de la string
Complejidad espacial : O(1)
¿Cómo hacer al revés?
Deje que el número decimal de entrada dado sea «inputNum» y la base de destino sea «base». Dividimos repetidamente inputNum por base y almacenamos el resto. Finalmente invertimos la string obtenida. A continuación se muestra la implementación de C.
C++
// C++ Program to convert decimal to any given base #include <bits/stdc++.h> using namespace std; // To return char for a value. For example '2' // is returned for 2. 'A' is returned for 10. 'B' // for 11 char reVal(int num) { if (num >= 0 && num <= 9) return (char)(num + '0'); else return (char)(num - 10 + 'A'); } // Function to convert a given decimal number // to a base 'base' and string fromDeci(string& res, int base, int inputNum) { int index = 0; // Initialize index of result // Convert input number is given base by repeatedly // dividing it by base and taking remainder while (inputNum > 0) { res.push_back(reVal(inputNum % base)); index++; inputNum /= base; } // Reverse the result reverse(res.begin(), res.end()); return res; } // Driver program int main() { int inputNum = 282, base = 16; string res; cout << "Equivalent of " << inputNum << " in base " << base << " is " << fromDeci(res, base, inputNum) << endl; return 0; } // The code is contributed by Gautam goel (gautamgoel962)
C
// C Program to convert decimal to any given base #include <stdio.h> #include <string.h> // To return char for a value. For example '2' // is returned for 2. 'A' is returned for 10. 'B' // for 11 char reVal(int num) { if (num >= 0 && num <= 9) return (char)(num + '0'); else return (char)(num - 10 + 'A'); } // Utility function to reverse a string void strev(char *str) { int len = strlen(str); int i; for (i = 0; i < len/2; i++) { char temp = str[i]; str[i] = str[len-i-1]; str[len-i-1] = temp; } } // Function to convert a given decimal number // to a base 'base' and char* fromDeci(char res[], int base, int inputNum) { int index = 0; // Initialize index of result // Convert input number is given base by repeatedly // dividing it by base and taking remainder while (inputNum > 0) { res[index++] = reVal(inputNum % base); inputNum /= base; } res[index] = '\0'; // Reverse the result strev(res); return res; } // Driver program int main() { int inputNum = 282, base = 16; char res[100]; printf("Equivalent of %d in base %d is " " %s\n", inputNum, base, fromDeci(res, base, inputNum)); return 0; }
Java
// Java Program to convert decimal to any given base import java.lang.*; import java.io.*; import java.util.*; class GFG { // To return char for a value. For // example '2' is returned for 2. // 'A' is returned for 10. 'B' for 11 static char reVal(int num) { if (num >= 0 && num <= 9) return (char)(num + 48); else return (char)(num - 10 + 65); } // Function to convert a given decimal number // to a base 'base' and static String fromDeci(int base1, int inputNum) { String s = ""; // Convert input number is given // base by repeatedly dividing it // by base and taking remainder while (inputNum > 0) { s += reVal(inputNum % base1); inputNum /= base1; } StringBuilder ix = new StringBuilder(); // append a string into StringBuilder input1 ix.append(s); // Reverse the result return new String(ix.reverse()); } // Driver code public static void main (String[] args) { int inputNum = 282, base1 = 16; System.out.println("Equivalent of " + inputNum + " in base "+base1+" is " + fromDeci(base1, inputNum)); } } // This code is contributed by mits
Python3
# Python3 Program to convert decimal to # any given base # To return char for a value. For example # '2' is returned for 2. 'A' is returned # for 10. 'B' for 11 def reVal(num): if (num >= 0 and num <= 9): return chr(num + ord('0')); else: return chr(num - 10 + ord('A')); # Utility function to reverse a string def strev(str): len = len(str); for i in range(int(len / 2)): temp = str[i]; str[i] = str[len - i - 1]; str[len - i - 1] = temp; # Function to convert a given decimal # number to a base 'base' and def fromDeci(res, base, inputNum): index = 0; # Initialize index of result # Convert input number is given base # by repeatedly dividing it by base # and taking remainder while (inputNum > 0): res+= reVal(inputNum % base); inputNum = int(inputNum / base); # Reverse the result res = res[::-1]; return res; # Driver Code inputNum = 282; base = 16; res = ""; print("Equivalent of", inputNum, "in base", base, "is", fromDeci(res, base, inputNum)); # This code is contributed by mits
C#
// C# Program to convert decimal to any given base using System; using System.Collections; class GFG { // To return char for a value. For // example '2' is returned for 2. // 'A' is returned for 10. 'B' for 11 static char reVal(int num) { if (num >= 0 && num <= 9) return (char)(num + 48); else return (char)(num - 10 + 65); } // Function to convert a given decimal number // to a base 'base' and static string fromDeci(int base1, int inputNum) { string s = ""; // Convert input number is given // base by repeatedly dividing it // by base and taking remainder while (inputNum > 0) { s += reVal(inputNum % base1); inputNum /= base1; } char[] res = s.ToCharArray(); // Reverse the result Array.Reverse(res); return new String(res); } // Driver code static void Main() { int inputNum = 282, base1 = 16; Console.WriteLine("Equivalent of " + inputNum + " in base "+base1+" is " + fromDeci(base1, inputNum)); } } // This code is contributed by mits
PHP
<?php // PHP Program to convert decimal to // any given base // To return char for a value. For example '2' // is returned for 2. 'A' is returned for 10. // 'B' for 11 function reVal($num) { if ($num >= 0 && $num <= 9) return chr($num + ord('0')); else return chr($num - 10 + ord('A')); } // Utility function to reverse a string function strev($str) { $len = strlen($str); for ($i = 0; $i < $len / 2; $i++) { $temp = $str[$i]; $str[$i] = $str[$len - $i - 1]; $str[$len - $i - 1] = $temp; } } // Function to convert a given decimal // number to a base 'base' and function fromDeci($res, $base, $inputNum) { $index = 0; // Initialize index of result // Convert input number is given base // by repeatedly dividing it by base // and taking remainder while ($inputNum > 0) { $res.= reVal($inputNum % $base); $inputNum = (int)($inputNum / $base); } // Reverse the result $res = strrev($res); return $res; } // Driver Code $inputNum = 282; $base = 16; $res = ""; print("Equivalent of $inputNum in base $base is " . fromDeci($res, $base, $inputNum)); // This code is contributed by mits ?>
Javascript
<script> // Javascript Program to convert decimal to any given base // To return char for a value. For // example '2' is returned for 2. // 'A' is returned for 10. 'B' for 11 function reVal(num) { if (num >= 0 && num <= 9) return String.fromCharCode(num + 48); else return String.fromCharCode(num - 10 + 65); } // Function to convert a given decimal number // to a base 'base' and function fromDeci(base1, inputNum) { let s = ""; // Convert input number is given // base by repeatedly dividing it // by base and taking remainder while (inputNum > 0) { s += reVal(inputNum % base1); inputNum = parseInt(inputNum / base1, 10); } let res = s.split(''); // Reverse the result res.reverse(); return res.join(""); } let inputNum = 282, base1 = 16; document.write("Equivalent of " + inputNum + " in base "+base1+" is " + fromDeci(base1, inputNum)); // This code is contributed by rameshtravel07. </script>
Producción :
Equivalent of 282 in base 16 is 11A
Complejidad de tiempo: O (N) El número de entrada de conversión se basa en inputNum repetidamente dividiéndolo por la base y tomando el resto toma O (n) complejidad
Espacio Auxiliar : O(1)
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA