Как быстро преобразовать десятичное число в любое основание из (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;
}