Рубрики

Конвертировать из любой базы в десятичную и наоборот

Учитывая число и его основание, преобразовать его в десятичную. Основание числа может быть любым, так что все цифры могут быть представлены с использованием от 0 до 9 и от A до Z. Значение A равно 10, значение B равно 11 и так далее. Напишите функцию для преобразования числа в десятичное.

Примеры:

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 

Мы настоятельно рекомендуем вам свернуть браузер и попробовать это в первую очередь.
Мы всегда можем использовать приведенную ниже формулу для преобразования из любой базы в десятичную.

"str" is input number as string 
"base" is base of input number.

Decimal Equivalent is,
  1*str[len-1] + base*str[len-2] + (base)2*str[len-2] + ...

Ниже приведена реализация вышеприведенной формулы.

C ++

// C программа для преобразования числа из любой базы
// в десятичном виде
#include <stdio.h>
#include <string.h>

  
// Возвращать значение символа Например, 2
// возвращено для '2'. 10 возвращается за «А», 11
// для 'B'

int val(char c)

{

    if (c >= '0' && c <= '9')

        return (int)c - '0';

    else

        return (int)c - 'A' + 10;

}

  
// Функция для преобразования числа из заданной базы 'b'
// в десятичном виде

int toDeci(char *str, int base)

{

    int len = strlen(str);

    int power = 1; // Инициализируем мощность базы

    int num = 0;  // Инициализировать результат

    int i;

  

    // Десятичный эквивалент: str [len-1] * 1 +

    // str [len-1] * base + str [len-1] * (base ^ 2) + ...

    for (i = len - 1; i >= 0; i--)

    {

        // цифра во входном номере должна быть

        // меньше базы номера

        if (val(str[i]) >= base)

        {

           printf("Invalid Number");

           return -1;

        }

  

        num += val(str[i]) * power;

        power = power * base;

    }

  

    return num;

}

  
// Код драйвера

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 программа для конвертации
// номер с любой базы
// в десятичном виде

import java.io.*;

  

class GFG 

{
// Возвращать значение символа
// Например, 2 возвращается
// для '2'. 10 возвращается
// для 'A', 11 для 'B'

static int val(char c)

{

    if (c >= '0' && c <= '9')

        return (int)c - '0';

    else

        return (int)c - 'A' + 10;

}

  
// Функция для преобразования
// номер из заданной базы
// 'b' в десятичном виде

static int toDeci(String str, 

                  int base)

{

    int len = str.length();

    int power = 1; // Инициализация

                   // сила базы

    int num = 0; // Инициализировать результат

    int i;

  

    // Десятичный эквивалент

    // str [len-1] * 1 + str [len-1] *

    // base + str [len-1] * (base ^ 2) + ...

    for (i = len - 1; i >= 0; i--)

    {

        // цифра во входном номере

        // должно быть меньше чем

        // номер базы

        if (val(str.charAt(i)) >= base)

        {

        System.out.println("Invalid Number");

        return -1;

        }

  

        num += val(str.charAt(i)) * power;

        power = power * base;

    }

  

    return num;

}

  
// Код драйвера

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));

}
}

  
// Этот код добавлен
// от anuj_67.

python3

# Python программа для преобразования
# число от любой базы до десятичной

  
# Вернуть значение символа.
# Например, 2 возвращается
# для «2». 10 возвращается за «А»,
№ 11 для 'B'

def val(c):

    if c >= '0' and c <= '9':

        return ord(c) - ord('0')

    else:

        return ord(c) - ord('A') + 10;

  
# Функция для преобразования числа
# от заданной базы 'b' до десятичной

def toDeci(str,base):

    llen = len(str)

    power = 1 # Инициализировать силу базы

    num = 0     # Инициализировать результат

  

    # Десятичный эквивалент: str [len-1] * 1 +

    # str [len-1] * base + str [len-1] * (base ^ 2) + ...

    for i in range(llen - 1, -1, -1):

          

        # Цифра во входном номере должна

        # быть меньше базовой цифры

        if val(str[i]) >= base:

            print('Invalid Number')

            return -1

        num += val(str[i]) * power

        power = power * base

    return num

      
# Код драйвера

strr = "11A"

base = 16

print('Decimal equivalent of', strr, 

              'in base', base, 'is'

                 toDeci(strr, base))

  
# Этот код добавлен
# Сахил Шелангия

C #

// C # программа для конвертации
// номер с любой базы
// в десятичном виде

using System;

  

class GFG 

{
// Возвращать значение символа
// Например, 2 возвращается
// для '2'. 10 возвращается
// для 'A', 11 для 'B'

static int val(char c)

{

    if (c >= '0' && c <= '9')

        return (int)c - '0';

    else

        return (int)c - 'A' + 10;

}

  
// Функция для преобразования
// номер из заданной базы
// 'b' в десятичном виде

static int toDeci(string str, 

                  int b_ase)

{

    int len = str.Length;

    int power = 1; // Инициализация

                   // сила базы

    int num = 0; // Инициализировать результат

    int i;

  

    // Десятичный эквивалент

    // str [len-1] * 1 + str [len-1] *

    // base + str [len-1] * (base ^ 2) + ...

    for (i = len - 1; i >= 0; i--)

    {

        // цифра во входном номере

        // должно быть меньше чем

        // номер базы

        if (val(str[i]) >= b_ase)

        {

        Console.WriteLine("Invalid Number");

        return -1;

        }

  

        num += val(str[i]) * power;

        power = power * b_ase;

    }

  

    return num;

}

  
// Код драйвера

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));

}
}

  
// Этот код добавлен
// от anuj_67.

PHP

<?php
// PHP программа для преобразования числа из
// любое основание к десятичной

  
// Возвращать значение символа Например,
// 2 возвращается для '2'. 10 возвращается
// для 'A', 11 для 'B'

function val($c)

{

    if ($c >= '0' && $c <= '9')

        return ord($c) - ord('0');

    else

        return ord($c) - ord('A') + 10;

}

  
// Функция для преобразования числа из заданного
// основание 'b' до десятичного

function toDeci($str, $base)

{

    $len = strlen($str);

    $power = 1; // Инициализируем мощность базы

    $num = 0; // Инициализировать результат

  

    // Десятичный эквивалент: str [len-1] * 1 +

    // str [len-1] * base + str [len-1] * (base ^ 2) + ...

    for ($i = $len - 1; $i >= 0; $i--)

    {

        // цифра во входном номере должна быть

        // меньше базы номера

        if (val($str[$i]) >= $base)

        {

            print("Invalid Number");

            return -1;

        }

  

        $num += val($str[$i]) * $power;

        $power = $power * $base;

    }

  

    return $num;

}

  
// Код драйвера

$str = "11A";

$base = 16;

print("Decimal equivalent of $str "

      "in base $base is " . toDeci($str, $base));

  
// Этот код предоставлен mits
?>


Выход :

Decimal equivalent of 11A in base 16 is 282

Как сделать обратное?
Пусть заданное входное десятичное число будет «inputNum», а целевая база — «base». Мы многократно делим inputNum на базу и сохраняем остаток. Наконец, мы переворачиваем полученную строку. Ниже приведена реализация C.

C ++

// C Программа для преобразования десятичного числа в любую заданную базу
#include <stdio.h>
#include <string.h>

  
// Чтобы вернуть char для значения. Например "2"
// возвращается для 2. «A» возвращается для 10. «B»
// для 11

char reVal(int num)

{

    if (num >= 0 && num <= 9)

        return (char)(num + '0');

    else

        return (char)(num - 10 + 'A');

}

  
// Утилита для переворачивания строки

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;

    }

}

  
// Функция для преобразования заданного десятичного числа
// к базе «база» и

char* fromDeci(char res[], int base, int inputNum)

{

    int index = 0;  // Инициализируем индекс результата

  

    // Преобразуем входное число, заданное основанием многократно

    // делим его на базу и берем остаток

    while (inputNum > 0)

    {

        res[index++] = reVal(inputNum % base);

        inputNum /= base;

    }

    res[index] = '\0';

  

    // Обратный результат

    strev(res);

  

    return res;

}

  
// Драйвер программы

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-программа для преобразования десятичного числа в любую заданную базу

import java.lang.*; 

import java.io.*; 

import java.util.*; 

  

class GFG

{

      
// Чтобы вернуть char для значения. За
// пример '2' возвращается для 2.
// 'A' возвращается за 10. 'B' за 11

static char reVal(int num)

{

    if (num >= 0 && num <= 9)

        return (char)(num + 48);

    else

        return (char)(num - 10 + 65);

}

  
// Функция для преобразования заданного десятичного числа
// к базе «база» и

static String fromDeci(int base1, int inputNum)

{

    String s = "";

  

    // Преобразуем входной номер

    // основание путем многократного деления

    // по базе и с остатком

    while (inputNum > 0)

    {

        s += reVal(inputNum % base1);

        inputNum /= base1;

    }

    StringBuilder ix = new StringBuilder(); 

  

        // добавляем строку в StringBuilder input1

        ix.append(s); 

  

    // Обратный результат

    return new String(ix.reverse());

}

  
// Код драйвера

public static void main (String[] args)

{

    int inputNum = 282, base1 = 16;

    System.out.println("Equivalent of " + inputNum +

                            " in base "+base1+" is " +

                            fromDeci(base1, inputNum));

}
}

  
// Этот код предоставлен mits

python3

# Python3 Программа для преобразования десятичного числа в
# любая заданная база

  
# Чтобы вернуть char для значения. Например
# '2' возвращается для 2. 'A' возвращается
№ для 10. «Б» для 11

def reVal(num):

  

    if (num >= 0 and num <= 9):

        return chr(num + ord('0'));

    else:

        return chr(num - 10 + ord('A'));

  
# Утилита для переворачивания строки

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;

  
# Функция для преобразования заданного десятичного числа
# номер базы "база" и

def fromDeci(res, base, inputNum):

  

    index = 0; # Инициализировать индекс результата

  

    # Преобразовать входное число в заданную базу

    # путем многократного деления его на базу

    # и брать остаток

    while (inputNum > 0):

        res+= reVal(inputNum % base);

        inputNum = int(inputNum / base);

  

    # Обратный результат

    res = res[::-1];

  

    return res;

  
Код водителя

inputNum = 282;

base = 16;

res = "";

print("Equivalent of", inputNum, "in base"

       base, "is", fromDeci(res, base, inputNum));

  
# Этот код предоставлен mits

C #

// C # Программа для преобразования десятичной в любую заданную базу

using System;

using System.Collections;

  

class GFG

{

      
// Чтобы вернуть char для значения. За
// пример '2' возвращается для 2.
// 'A' возвращается за 10. 'B' за 11

static char reVal(int num)

{

    if (num >= 0 && num <= 9)

        return (char)(num + 48);

    else

        return (char)(num - 10 + 65);

}

  
// Функция для преобразования заданного десятичного числа
// к базе «база» и

static string fromDeci(int base1, int inputNum)

{

    string s = "";

  

    // Преобразуем входной номер

    // основание путем многократного деления

    // по базе и с остатком

    while (inputNum > 0)

    {

        s += reVal(inputNum % base1);

        inputNum /= base1;

    }

    char[] res = s.ToCharArray();

  

    // Обратный результат

    Array.Reverse(res);

    return new String(res);

}

  
// Код драйвера

static void Main()

{

    int inputNum = 282, base1 = 16;

    Console.WriteLine("Equivalent of " + inputNum +

                            " in base "+base1+" is " +

                            fromDeci(base1, inputNum));

}
}

  
// Этот код предоставлен mits

PHP

<?php
// Программа PHP для преобразования десятичного числа в
// любая заданная база

  
// Чтобы вернуть char для значения. Например "2"
// возвращается для 2. 'A' возвращается для 10.
// 'B' для 11

function reVal($num)

{

    if ($num >= 0 && $num <= 9)

        return chr($num + ord('0'));

    else

        return chr($num - 10 + ord('A'));

}

  
// Утилита для переворачивания строки

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;

    }

}

  
// Функция для преобразования заданного десятичного числа
// номер базы 'base' и

function fromDeci($res, $base, $inputNum)

{

    $index = 0; // Инициализируем индекс результата

  

    // Преобразуем входное число по заданной базе

    // путем повторного деления на базу

    // и остаток

    while ($inputNum > 0)

    {

        $res.= reVal($inputNum % $base);

        $inputNum = (int)($inputNum / $base);

    }

  

    // Обратный результат

    $res = strrev($res);

  

    return $res;

}

  
// Код драйвера

$inputNum = 282;

$base = 16;

$res = "";

print("Equivalent of $inputNum in base $base is "

                 fromDeci($res, $base, $inputNum));

  
// Этот код предоставлен mits
?>


Выход :

Equivalent of 282 in base 16 is  11A

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Конвертировать из любой базы в десятичную и наоборот

0.00 (0%) 0 votes