如何快速将十进制数字从(0-9,A-Z)范围数字转换为任何底数? 我需要制作一个将十进制数字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;
}