1. 程式人生 > >C++中的進位制轉換

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