转换尽可能快的整数n之间的两个基-内置函数
Convert as fastest as possible integer n between two bases - built-in function
我有一个单基数的整数(基数!= 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字符和数字值之间进行转换。如果不给你一个解决方案,我真的不能说得更多,但希望这是一个足够的提示。
相关文章:
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 为什么具有静态存储持续时间的同一内联变量在包含在 VS2017 编译的两个翻译单元中时会构造和销毁两次
- 内置用于比较两个(或多个)值的方式
- 我应该如何使用remove_if删除两个数字范围内的元素
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- 如何通过 stl 容器和算法库计算两个向量的内积?
- 解决方案在两个日期之间的天数内不起作用
- 同一范围内矢量的两个独立"for"循环,仅打印第一个循环
- 两个循环内的多个文本文件
- 两个内联程序集调用与一个内联程序集调用中的内存损坏?
- 初始化类内向量向量的两个维度
- 两个&&在一段时间内?
- 反转字符串中的 n 个字符(字符串中没有空格),而不使用 c++ 中的内置函数
- 文件读取内/外,两个读语句(逻辑?
- 擦除两个 for 循环内的矢量元素
- <algorithm>在同一输入迭代器范围内并排运行两个
- 重载函数的调用是不明确的(两个函数在不同的范围内)
- C++中是否有一个std::string的内置函数,当两个字符串都可以是大写或小写时,可以按字母顺序比较两个字符串
- 内置C++函数,使两个字符串的比较不区分大小写
- 转换尽可能快的整数n之间的两个基-内置函数