C++进制转换相关

自带

注意

只有

  • oct,八进制
  • dec,十进制
  • hex,十六进制

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# include <bits/stdc++.h>
using namespace std;
int main()
{
//格式化
printf("%o\n" , 18);
printf("%d\n" , 18);
printf("%x\n" , 18);
//输入流
cout << oct << 18 << "\n";
cout << dec << 18 << "\n";
cout << hex << 18 << "\n";
return 0;
}

库函数

这个函数在 cstdlib 中。

itoa(num , str , base)中,num表示参与转换的整型(整数,非字符串),str表示结果存哪儿,base表示要转化的进制。

代码

1
2
3
4
5
6
7
8
9
# include <bits/stdc++.h>
using namespace std;
char s[110];
int main()
{
itoa(18 , s , 2);
printf("%s\n" , s);
return 0;
}

手写

最万能的,最靠谱的。

nn1010

1
2
3
4
5
6
7
8
9
10
11
12
13
long long ntoD(string s , int p){
long long ans = 0;
for(int i = 0 ; i < s.size() ; i++){
int x = 0;
if(s[i] >= '0' && s[i] <= '9'){
x = s[i] - '0';
}else{
x = s[i] - 'A' + 10;
}
ans = ans * p + x;
}
return ans;
}

1010nn

1
2
3
4
5
6
7
8
9
10
string l = "0123456789ABCDEF";
string Dton(int n, int p){
string a = "";
while(n > 0){
int x = n % p;
a = l[x] + a;
n = n / p;
}
return a;
}

技巧

当是 nn 进制转 mm 进制时,先将 nn 转成 1010 进制,再将转换结果转成 mm 进制。


C++进制转换相关
http://zhangyimin12345.github.io/posts/cmamfvq5q000dh836bc9beh1z/
作者
zhangyimin12345
发布于
2025年5月6日
更新于
2025年5月6日
许可协议