转换尽可能快的整数n之间的两个基-内置函数

Convert as fastest as possible integer n between two bases - built-in function

本文关键字:两个 内置 函数 尽可能 整数 转换 之间      更新时间:2023-10-16

我有一个单基数的整数(基数!= 10 &&1 & lt;基地& lt;17)从标准输入到字符串。我必须将其转换为相同范围内的另一个(1

我已经编写了自己的函数来将整数n从基数1-10转换为基数10,并从这个基数转换为范围1-10的其他基数,但我无法为基数> 10(例如11或16)做到这一点。

我的当前代码:

int wynik = 0;
string wynikowy="";
int potega(int liczba, int stp)
{
int wynik = 1;
for(int i = 0; i < stp; i++)
{
wynik = wynik * liczba;
}
return wynik;
}
void zamien(string s, int system)
{
for(int i = s.length()-1; i >=0 ; i --)
{
wynik=wynik+(int)(s.at(i)-'0')*potega(system,s.length()-1-i);
}
}
void zamienNa(int liczba, int system)
{
stringstream ss;
if(liczba < system)
{
ss << liczba;
wynikowy+=ss.str();
}
else
{
ss << liczba%system;
wynikowy+=ss.str();
zamienNa((liczba-liczba%system)/system, system);
}
}

使用例子:

zamien(s,4); //from base
zamienNa(wynik,5); // to base
for(int i = wynikowy.length()-1; i >= 0; i--)
{
cout << wynikowy.at(i);
}

假设“在两个基数之间尽可能快地转换整数n ”,然后

re

是否有任何内置函数可以做到这一点?

strtol函数从字符串转换为指定基数≤36的long。但是,没有内置或标准库函数将转换为任意基数的字符串。幸运的是,这很容易实现。

和re

我无法为基数> 10。

除了数字的表示之外,没有任何区别。考虑在可显示的ASCII字符和数字值之间进行转换。如果不给你一个解决方案,我真的不能说得更多,但希望这是一个足够的提示。