C++中的进制转换

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

猜你喜欢

转载自blog.csdn.net/weixin_42809993/article/details/81674620