任意进制的转换(base2-base36)
来源:互联网 发布:阿里域名隐私保护 编辑:程序博客网 时间:2024/06/05 17:02
思路和普通的十进制转任意进制相同,假设将M进制转N进制,则基本思路为:M/N的余数的N进制表示作为结果的第一位,商的M进制表示作为下一论循环的输入。直到M为0为止。
参考:http://www.cnblogs.com/pkuoliver/archive/2010/10/27/convert-m-number-to-n-number.html
#include <iostream>#include <string>#include <algorithm>using namespace std;char getStrFromInt(int value){if(value >= 0 && value <= 9)return (value + '0');if(value >= 10 && value <= 35)return ('a' + (value-10));elsecout << "error!!!" << endl;return '#';}int getIntFromStr(char value){if(value >= '0' && value <= '9')return value - '0';else if(value >= 'a' && value <= 'z')return (value - 'a') + 10;}char qiuyu(string &num, int M, int N){int remain = 0;string shang;for(int i=0; i<num.size(); i++){remain = remain*M + getIntFromStr(num[i]);shang += getStrFromInt(remain / N);remain = (remain % N); }while(shang.size() > 0 && shang[0] == '0'){shang = shang.substr(1, shang.size()-1);}num = shang;return getStrFromInt(remain);}string baseConvert(string num, int M, int N){string result;string shang = num;while(shang.size() > 0){result += qiuyu(shang, M, N);}std::reverse(result.begin(), result.end());return result;}int main(){string bin = "10101010101010101010101010101010110";string b36 = baseConvert(bin, 2, 36);cout << b36 << endl;}
0 0
- 任意进制的转换(base2-base36)
- 任意的进制转换
- 任意的进制转换
- 任意进制的转换
- 任意进制的转换
- 任意的进制转换
- COM组件:完成任意进制到任意进制的转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换!!!
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- VisualStudio2010旗舰版打开后,出现各种程序包加载失败的问题。
- IP数据包 标识 标志 片偏移
- 自动消息调度器的实现
- android应用开发及系统有用代码片段总结
- 第13章、布局Layouts之RelativeLayout相对布局(从零开始学Android)
- 任意进制的转换(base2-base36)
- Eclipse “cannot be resolved to a type” error
- LeetCode——Palindrome Number
- .net C# 异步Socket 发送类.
- RemoteViews用法一:widget简单用法
- 类的继承与组合
- anctionbar样式 自定义属性
- 第14章、布局Layouts之FrameLayout框架布局(从零开始学Android)
- ERROR OGG-00524 DDL trace log file [\ggs_ddl_trace.log], error code -20782 error message ORA-207