进制转换
基本规律
// x 输入数字 n 进制 vec 输出数字
while(x)
{
x = x / n;
b = x % n;
vec.push_back(b);
}
注意
- x=0
- x<0
- 大数用字符串表示
常见进制表示
- HEX 十六进制
- BIN 二进制
- OCT 八进制
- DEC 十进制
常见函数
// char to int
atoi(const char *nptr)
// int to char
// char *itoa( int value, char *string,int radix);
// value:欲转换的数据。
// string:目标字符串的地址。
// radix:转换后的进制数,可以是2进制、10进制、16进制等。
// 返回指向string这个字符串的指针。慎用。
itoa(int a, char* s, int radix)
// 推荐使用_itoa_s(x, p, n)
// 其中 p必须给定空间大小
// sth to string
to_string()
stoi()
atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 。特别注意,该函数要求被转换的字符串是按十进制数理解的。
(转自百度百科)
十进制转2-9进制
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> T(long int x, int n)
{
vector<int> num;
if (x <= 0 || x > 1e18 || n < 2 || n > 9) {
num.push_back(0);
return num;
}
//long int a;
int b;
while (x)
{
b = x % n;
x = x / n;
num.push_back(b);
}
reverse(num.begin(), num.end());
return num;
}
int main(int argc, char* argv[])
{
long int x;
int n;
cin >> x >> n;
vector<int> result = T(x, n);