模板--任意进制转换
2017-07-31 14:42
141 查看
#include
#include
using namespace std;
//任意进制之间的转换
/**
* s1 转换之前的数
* s2 转换之后的数
* d1 原进制数
* d2 需要转到的进制数
* 高于9的位数用大写'A'~'Z'表示,2~16位进制通过验证
*/
void conversion(string s1,string &s2,long d1,long d2){
//思路,还是将原数转换成十进制数 -> 再由十进制数转换成目标进制的数
long i, j, t, num;
char c;
num = 0;
//先转换成十进制数
for ( i = 0; i < s1.size(); i++){
if (s1[i] >= '0'&&s1[i] <= '9'){
t = s1[i] - '0';
}
else t = s1[i] - 'A' + 10;
//参考十进制的方式
num = num*d1 + t;
}
i = 0;
s2 = "";
while (1){
t = num%d2;
num /= d2;
if (t <= 9)s2 = to_string(t)+ s2;
else s2 = (char)((t - 10 + 'A')) + s2;
if (num == 0)break;
}
}
//测试函数
int main(){
string str1, str2;
long d1, d2;
while (cin >> str1 >> d1 >> d2){
conversion(str1, str2,d1, d2);
cout << str2 << endl;
}
return 0;
}
#include
using namespace std;
//任意进制之间的转换
/**
* s1 转换之前的数
* s2 转换之后的数
* d1 原进制数
* d2 需要转到的进制数
* 高于9的位数用大写'A'~'Z'表示,2~16位进制通过验证
*/
void conversion(string s1,string &s2,long d1,long d2){
//思路,还是将原数转换成十进制数 -> 再由十进制数转换成目标进制的数
long i, j, t, num;
char c;
num = 0;
//先转换成十进制数
for ( i = 0; i < s1.size(); i++){
if (s1[i] >= '0'&&s1[i] <= '9'){
t = s1[i] - '0';
}
else t = s1[i] - 'A' + 10;
//参考十进制的方式
num = num*d1 + t;
}
i = 0;
s2 = "";
while (1){
t = num%d2;
num /= d2;
if (t <= 9)s2 = to_string(t)+ s2;
else s2 = (char)((t - 10 + 'A')) + s2;
if (num == 0)break;
}
}
//测试函数
int main(){
string str1, str2;
long d1, d2;
while (cin >> str1 >> d1 >> d2){
conversion(str1, str2,d1, d2);
cout << str2 << endl;
}
return 0;
}
相关文章推荐
- 数据结构 栈的应用任意进制转换(c语言实现)
- ACM模板 图论,Floyd 任意两点间最短路
- [自用门户]jeecms 三级页面内容模板,重点是实现<hr />标签分割线可以参考,css任意位置及长短
- 任意的进制转换
- 进制转换 HDU2031(十进制向任意进制转化)
- 数据结构 使用递归任意进制转换(c语言实现)
- java任意进制转换
- YAF label getcookie() php加密函数 自己调用任意模板
- 初学C#之进制转换(支持十进制小数转任意进制【2到36进制】)
- (模板)多项式乘法对任意数取模
- 建站之星V2.1最新破解版,已去除版权,企业建站首选,千套模板任意更换![PHP+MYSQL]
- c++模板实现多参数任意传 - 方法实现
- 十进制转换成任意进制(模板)
- 模板实现任意维数组
- 任意进制转换!!!
- hdu 1814 2-sat 输出字典最小的和任意序列的 模板题
- POJ 1220 大数任意进制转换
- 2-SAT求任意解模板
- 强大的C++模板编程,任意类型间轻松转换
- hdu 1814 2-sat 输出字典最小的和任意序列的 模板题