进制转换里面的一些函数
C++里面自己写的函数(可以转换2-36的函数)
long long convert(string n, long long radix) {
long long sum = 0;
int index = 0, temp = 0;
for (auto it = n.rbegin(); it != n.rend(); it++) {
temp = isdigit(*it) ? *it - '0' : *it - 'a' + 10;
sum += temp * pow(radix, index++);
}
return sum;
}
String类型转换成int类型
注意,atoi直接放string类型是不对的,因为atoi里面的参数只能是char *的类型
如果是string类型的话.一定要加一个 .c_str()
/* atoi example */
#include <stdio.h> /* printf, fgets */
#include <stdlib.h> /* atoi */
#include <string>
using namespace std;
int main ()
{
int i;
string a="123";
i = atoi(a.c_str());
printf ("%d",i);
return 0;
}
int 类型转换成string类型
就是我们常用的
to_string(a) a的类型是int
需要的头文件为string
例子如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int a=123;
cout<<to_string(a);
}
任意之间的进制转换
int len = 0, arr[100];
do {
arr[len++] = n % d;
n = n / d;
} while (n != 0);
//柳神的老方法了.专门用来转换进制的.自己写的时候,忘记了.
for (int i = 0; i < len; i++)
n = n * d + arr[i];