C/C++中的三种进制
1.十进制:dec
2.八进制:oct
3.十六进制:hex
程序如下:
#include "iostream"
using namespace std;
int main()
{
int a,b,c;
a = 10;//十进制
b = 077;//八进制
c = 0xff;//十六进制
cout <<"转换成十进制"<<dec<<a << ' ' << b << ' ' << c << endl;
cout << "转换成十六进制"<<hex << a << " " << b << " " << c << endl;
cout << "转换成八进制" << oct << a << " " << b << " " << c << endl;
system("pause");
}
结果为:
转换成十进制 10 63 255
转换成十六进制 a 3f ff
转换成八进制 12 77 377
c++中对二进制的输入输出是不支持的
1. *itoa函数实现各进制数的转换(不能转换二进制)*
itoa是广泛应用的非标准C语言和C++语言扩展函数。由于它不是标准 C/C++语言函数,所以不能在所有的编译器中使用。但是,大多数的编译器(如Windows上的)通常在”stdlib”头文件中包含这个函数。
函数原型
_itoa_s(
int value,
char *buffer,
size_t sizeInCharacters,
int radix
)
value :被转换的整数
buffer :转换后存储的字符数组
sizeInCharacters:被转换的数的进制(8,10,16)
radix :转换进制数。(可以是 2, 8, 10, 16)
程序如下:
#include "iostream"
#include <stdlib.h>
using namespace std;
int main()
{
int a,b,c;
char value[10];
a = 10;
b = 12;
c = 0xff;
_itoa_s(a, value,10,2);
cout << "十进制--二进制"<<value << endl;
_itoa_s(b, value, 8, 2);
cout << "八进制--二进制" << value << endl;
_itoa_s(c, value, 8, 10);
cout << "十六进制--十进制" << value << endl;
system("pause");
}
结果:
十进制–二进制1010
八进制–二进制1100
十六进制–十进制255
2. sprintf 函数实现数制转换(不能转换成2进制)
把格式化数据写入某个字符缓冲区中,头文件为”stdio.h”
函数原型:
int sprintf(char *buffer, const char format, value)
buffer:缓冲区
format:转换的类型(8-“%o”,10-“%d”,16-“%x”)
value:要转换的数
#define _CRT_SECURE_NO_WARNINGS
#include "iostream"
#include <stdlib.h>
using namespace std;
int main()
{
int a,b,c;
char value[10];
a = 10;
sprintf(value, "%x", 10);
cout <<"十进制-十六进制"<< value << endl;
system("pause");
}
结果:
十进制-十六进制a