进制转换

来源:互联网 发布:centos 7搭建httpd 编辑:程序博客网 时间:2024/04/29 15:44

1.

./*
给定程序MODI1.C中函数 fun 的功能是: 将十进制正整数m转
换成k(2≤k≤9)进制数, 并按位输出。
例如,若输入 8 和 2 ,则应输出 1000 (即十进制数8转换成二
进制表示是1000)。
请改正 fun 函数中的错误,使它能得出正确的结果。
注意:不要改动 main 函数。不得增行或删行,也不得更改程
序的结构!
*/
#include
#include
void fun( int m, int k )
{
int aa[20], i;
for( i = 0; m; i++ )
{
/**********found**********/
aa[i] = m%k;
m /= k;
}
for( ; i; i-- )
/**********found**********/
printf( "%d", aa[ i-1 ] );
//printf( "%d", aa[ i ] );
}

main()
{
int b, n;
clrscr();
printf( "/nPlease enter a number and a base:/n" );
scanf( "%d %d", &n, &b );
fun( n, b );
printf("/n");
}

2.char result [33];
result[32] = '/0';
for (int i = 0, j = 1; i < 33; i++)
{
 result[32 - i - 1] = (nSource & j) ? '1' : '0';
 j = j << 1;
}

3.unsigned char BtoH(char ch)//将16进制的一个字符转换为十进制的数
{
//0-9
if (ch >= '0' && ch <= '9')
return (ch - '0');

//9-15
if (ch >= 'A' && ch <= 'F')
return (ch - 'A' + 0xA);

//9-15
if (ch >= 'a' && ch <= 'f')
return (ch - 'a' + 0xA);
return(255);
}

可根据该函数改写。。
也可以用该函数转换16进制每个字符。然后相加得到10进制数,再用DecimalToBinary转换

4.//转换十进制为二进制
CString DecimalToBinary(CString strDecimal)
{
 int nDecimal = atoi(strDecimal.GetBuffer(0));
 int nYushu; //余数
 int nShang; //商
 CString strBinary = "";
 char buff[2];
 CString str = "";
 BOOL bContinue = TRUE;
 while(bContinue)
 {
  nYushu = nDecimal%2;
  nShang = nDecimal/2;
  sprintf(buff,"%d",nYushu);
  str = strBinary;
  strBinary.Format("%s%s",buff,str);
  nDecimal = nShang;
  if(nShang==0)
   bContinue = FALSE;
 }
 return strBinary;
}
或者
char str[100];
itoa(11, str, 2);//根据最后itoa最后一个参数设置进制,可把十进制转换为其他进制