Преобразование из десятичного в любое базовое число - PullRequest
0 голосов
/ 25 июня 2019

Как быстро преобразовать десятичное число в любое основание из (0-9, AZ) номера диапазона?Мне нужно сделать функцию, которая получит десятичное число n больше 0, и функция преобразует его в число в массиве char по заданной базе.Функция должна возвращать количество цифр.Могу ли я сделать это быстрее или, может быть, есть более быстрое решение?Это как хорошая сложность?И что мне делать, если база равна 0 или 1?Будет ли изменение массива char в конце быстрее, чем добавление в начале массива char?Важно, что переменная char R [32] не может быть удалена, очевидно, вы можете поместить массив char в параметр функции, а затем просто получить его длину и выполнить некоторые условия на основе длины.

#include <iostream>
#include <algorithm>
char R[32];
int convert(unsigned int n, unsigned int p) 
{
    if (p > 36) {
        throw std::logic_error("Base should be from a 0-9 A-Z range");
    }
    unsigned int i = 0;
    unsigned int r;
    for(i=0;n!=0 && i<32;i++) 
    {
        r = n % p;
        if (r >= 10) {
            R[i] = 'A' + (r-10);
        }
        else
            R[i] = '0'+r;
        n = n / p;
    }
    std::reverse(R,R+strlen(R));
    return i;
}

int main()
{
convert(4,32);
cout<<R;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...