這篇文章主要為大家詳細(xì)介紹了C++中常見的進(jìn)制轉(zhuǎn)換面試題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,發(fā)現(xiàn)的小伙伴們可以參考一下:
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的新吳網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
C++進(jìn)制轉(zhuǎn)換的實例
一個面試題,要求輸入十進(jìn)制數(shù),輸出十六進(jìn)制,可以使用printf打印%d,%c,%s來輸出,但不能使用 %x 打印。
寫了兩種算法,還算比較簡潔,粘貼在此。
// 第一種算法,從低位到高位掃描移位,需要一個數(shù)組輔助倒序,一次性輸出結(jié)果 #include#define MAX_HEX_NUM 16 #define OUT_DATA_LEN sizeof(int)*2 // 2個16進(jìn)制數(shù)表示1個字節(jié) static char Hex_Char_Table[MAX_HEX_NUM] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; int ten2hex( int data ) { char result[OUT_DATA_LEN+1]; int i,index; result[OUT_DATA_LEN] = '\0'; for( i=OUT_DATA_LEN-1; i>=0; i-- ) { index = data & 0xf; result[i] = Hex_Char_Table[index]; data = data>>4; } printf("0x%s\n",result); return 0; }
下面是第二種算法,從高位向低位掃描,得到結(jié)果直接打印。
#include#define BITS_OF_INT sizeof(int)*8 // int的位數(shù) #define OUT_DATA_LEN sizeof(int)*2 // 2個16進(jìn)制數(shù)表示1個字節(jié) int printHex( int num ) { int i; printf("0x"); for(i=0;i > (BITS_OF_INT-4); char c; if( res <= 9 ) c = res + '0'; else c = 'A' + res - 10; printf("%c",c); num = num << 4; } printf("\n"); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。