C++中常见的进制转换面试题

这篇文章主要为大家详细介绍了C++中常见的进制转换面试题,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的新吴网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

C++进制转换的实例

 一个面试题,要求输入十进制数,输出十六进制,可以使用printf打印%d,%c,%s来输出,但不能使用 %x 打印。

    写了两种算法,还算比较简洁,粘贴在此。        

// 第一种算法,从低位到高位扫描移位,需要一个数组辅助倒序,一次性输出结果 
 
#include  
 
#define MAX_HEX_NUM 16 
#define OUT_DATA_LEN sizeof(int)*2 // 2个16进制数表示1个字节
 
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; 
}

    下面是第二种算法,从高位向低位扫描,得到结果直接打印。

#include  
 
#define BITS_OF_INT  sizeof(int)*8 // int的位数 
#define OUT_DATA_LEN sizeof(int)*2 // 2个16进制数表示1个字节 
 
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"); 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。


当前名称:C++中常见的进制转换面试题
转载来于:http://scyanting.com/article/jpgpei.html