之前遇到进制转换相关的问题时,都是自己用递归实现,百度搜了下原来有自带的函数可以用,那当然是直接就用上了~
C语言
首先是C里面的,C里面直接用printf就可以实现,如下代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
printf("10对应的十进制,八进制,十六进制:\n");
printf("%d %o %X\n", 10, 10, 10);
return 0;
}
这个有个缺点,就是不能转换二进制,需要用atoi来转换 如下代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
printf("10对应的十进制,八进制,十六进制:\n");
printf("%d %o %X\n", 10, 10, 10);
char b[20];
itoa(10, b, 2);
printf("10对应的二进制:\n");
printf("%s\n", b);
return 0;
}
atoi函数原型:
char *itoa (int value, char *str, int base);
它可以进行任意进制转换,value为待转换的值,str为结果的缓存区,base为需要转换的进制
但是这个函数有个缺点,就是负数的转换好像有点小问题.这时用C++的来实现就没问题
C++
C++中也是直接cout就能输出,如下代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
cout << "10对应的十进制,八进制,十六进制" << endl;
cout << 10 << oct << " " << 10 << hex << " "<< 10 << endl;
cout << "10对应的二进制" << endl << bitset<8>(10) << endl;
cout << "-10对应的二进制" << endl << bitset<8>(-10) << endl;
return 0;
}
其中二进制的转换用了一个 bitset函数 这里我们可以直接把它当作进制转换使用.
`bitset<n>(value);`
其中n为位数,value为值.
用这些方法后解题会节省一些时间(甚至很多),看自己需求使用吧.