二 八 十 十六進製制之間資料轉換

2021-06-20 00:11:18 字數 3324 閱讀 4296

#include #include

#include

using namespace std;

int main()  

int scanf( const char *format, ... );

scanf()函式是格式化輸入函式,它從標準輸入裝置(鍵盤) 讀取輸入的資訊。     其呼叫格式為: scanf("《格式化字串》",《位址表》)。

scanf("%d,%d", &a, &b);                如果a和b都被成功讀入,那麼scanf的返回值就是2   

如果只有a被成功讀入,返回值為1

如果a和b都未被成功讀入,返回值為0        

如果遇到錯誤或遇到end of file,返回值為eof。 

//列印訊息的二進位制值

char result[8];

char* echobin = new char[(size-pos)*10];

memset(echobin,0,(size-pos)*10);

int echolen = 0;

for(int i=0; i<(size-pos); i++)

memmove(echobin+echolen,"&",sizeof("&"));

echolen++; }

log(1)("echobin=%s\n",echobin);

log(1)("bin end!echolen=%d\n",echolen);

delete echobin;

echobin = null;

控制字元說明

%c乙個單一的字元

%d乙個十進位制整數

%i乙個整數

%e, %f, %g

乙個浮點數

%o乙個八進位制數

%s乙個字串

%x乙個十六進製制數

%p乙個指標

%n乙個等於讀取字元數量的整數

%u乙個無符號整數

%乙個字符集

%%乙個精度符號

1、二進位制數、八進位制數、十六進製制數轉十進位制數

有乙個公式:各位數字分別乖以各自的基數(進製)的(n-1)次方,其和相加之和便是相應的十進位制數。個位,舉例:

二進位制:    110=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6

八進位制:    110=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72

十六進製制: 110=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272

2.十進位制轉其它進製(兩種方法)

第一種方式:除以進製位

一、十進位制轉二進位制 

如:55轉為二進位制 

2|55 

27――1 個位 

13――1 第二位 

6――1 第三位 

3――0 第四位 

1――1 第五位 

最後被除數

1為第六位,即得110111 

二、十進位制轉八進位制
如:5621轉為八進位制 

8|5621

702 ―― 5 第一位(個位)

87 ―― 6 第二位

10 ―― 7 第三位

1 ―― 2 第四位

最後得八進位制數:12765

三、十進位制數十六進製制 

如:76521轉為十六進製制

16|76521

4782 ――9 第一位(個位)

298 ――e 第二位

18 ――a 第三位

1 ―― 2 第四位

最後得12ae9

第二種方式:

先把十進位制轉換為二進位制,然後取二進位制每4位為16進製制的一位(共8位),每3位為8進製的一位(共11位)

可以與1111和111相與來得出它們的每一位

其實這兩種方法是一樣的,一種是十進位制的除法,一種是二進位制的除法(16進製為例:位移4位是求除的結果,與1111相與是求餘)

2.二進位制數轉換成其它進製

二進位制轉八進位制:從小數點位置開始,整數部分向左,小數部分向右,每三位為一組用八進位制的數字來表示

010110.001100b=26.14

八進位制轉二進位制反之則可。

二進位制轉十六進製制:從小數點位置開始,整數部分向左,小數部分向右,每四位為一組用十六進製制的數字來表示,

00100110.00010100b=26.14

十進位制轉其他進製**
#include #include #include #define map_len 16

//各進製的最大長度

#define hex_shift 4

#define hex_len ( (int)(32/hex_shift) + 1 ) 9

#define oct_shift 3

#define oct_len ( (int)(32/oct_shift) + 1 ) 11

#define bin_shift 1

#define bin_len ( (int)(32/bin_shift) + 1 ) 33

static char maptable[map_len] = ;

void int2other( int number, int size, int mask, int shift )//size為字元位數(儲存轉換後的字元),mask 為1111 111 1,shift為4 3 1

//輸出值

//printf( "%s\n", result );//這個是正序的 應該逆序輸出

for ( --i; i >= 0; i-- )

delete result;

}void int2hex( int number )

void int2oct( int number)

void int2bin( int number)

int main()

二 八 十 十六進製制之間轉換

進製轉換 十進位制和 二 八 十六進製制之間之間轉換 二 八 十六進製制之間可以借助十進位制來互相轉換 package algorithms author time 2017年5月10日 上午11 37 08 public class sysconvert return bin 十進位制 八進位制 ...

二 八 十 十六進製制之間的轉換

int n1 14 十進位制轉成十六進製制 integer.tohexstring n1 十進位制轉成八進位制 integer.tooctalstring n1 十進位制轉成二進位制 integer.tobinarystring 12 十六進製制轉成十進位制 integer.valueof ffff...

java 二 八 十 十六進製制之間的轉換

int n1 14 十進位制轉成十六進製制 integer.tohexstring n1 十進位制轉成八進位制 integer.tooctalstring n1 十進位制轉成二進位制 integer.tobinarystring 12 十六進製制轉成十進位制 integer.valueof ffff...