任意进制(2-36)互相转换
来源:互联网 发布:注册.hk域名 编辑:程序博客网 时间:2024/05/22 14:43
任意进制(2-36)转换, 一种速度较快的方法为使用十进制作为中介.
- 转换到10进制
- n为任意进制数的字符串形式, radix为进制
- 转换的每一位的范围是:0-9或A-Z
- 进制转换要从低位开始,乘以其相应进制位的倍数
(从右到左,即radix0,radix1,radix2,radix3).
- 转换10进制到任意进制, n为十进制数, radix为转换目标
1.转成二进制
76 / 2 … 0
= 38 / 2 … 0
= 19 / 2 … 1
= 9 / 2 … 1
= 4 / 2 … 0
= 2 / 2 … 0
= 1 / 2 … 1
76(10) = 1001100(2)2.转成八进制
76 / 8 … 4
= 9 / 8 … 1
= 1 / 8 … 1
76(10) = 114(8)3.转成十六进制
76 / 16 … 12
= 4 / 16 … 4
76(10)=4C(16)
int to_dec(string n, int radix){ int i, b = 1, sum = 0; //i要做数组a的下标,注意其起止范围 for (i = n.size() - 1; i >= 0; i--) { if (n[i] >= 'A') { sum += (n[i] - 'A' + 10) * b; b *= radix; } else { sum += (n[i] - '0') * b; b *= radix; } } return sum;}string dec_to(int n, int radix){ // 这种方法不适用于0, 所以需要特殊处理 if (n == 0) return "0"; vector<int> vec; while (n != 0) { vec.push_back(n%radix); n /= radix; } string result; for (int i = vec.size() - 1; i >= 0; i--) { result += temp[vec[i]]; } return result;}
所以互相转换只需要调用两个函数就可以, 如15进制的A 转换到8进制: dec_to(to_dec("A", 15), 8)
.
封装一下
string convert_radix(string n, int from, int to) { return dec_to(to_dec(n, from), to);}
如15进制的A 转换到8进制: convert_radix("A", 15, 8)
0 0
- 任意进制(2-36)互相转换
- java实现任意进制的互相转换
- 进制互相转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换!!!
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意整数转换为任意进制
- 转换成任意[2, 36]进制的字符串输出
- 任意进制相互转换
- 中央仓库 常用
- Java开发中的23种设计模式详解
- 20161030
- 洛谷 P1081 开车旅行(抄)
- mac AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案
- 任意进制(2-36)互相转换
- suibiankande
- cadence 重装后右键打开方式问题
- 微服务理论与实践(一)----架构的背景及需求
- LaTex 学习笔记 10/30
- 状态模式(行为型)
- 数据库
- 我的JAVA日记 一
- 函数时栈帧变换