018.任意进制数的转换

简介: 018.任意进制数的转换
/* 函数trans将无符号整数n翻译成d(2<=d<=16)进制表示的字符串s */
#define M sizeof(unsigned int)*8
int trans(unsigned n, int d, char s[])
{
  static char digits[] ="0123456789ABCDEF"; /* 十六进制数字的字符 */
  char buf[M+1];
  int j, i = M;
  if(d<2||d>16)
  {
    s[0]='\0';  /* 不合理的进制,置s为空字符串 */
    return 0; /* 不合理的进制,函数返回0 */
  }
  buf[i]='\0';
  do
  {
    buf[--i]=digits[n%d]; /*译出最低位,对应字符存入对应工作数组中*/
    n/=d;
  }while(n);
  /* 将译出在工作数组中的字符串复制到s */
  for(j=0;(s[j]=buf[i])!='\0';j++,i++);
    /* 其中控制条件可简写成s[j]=buf[i] */
  return j;
}
/* 主函数用于测试函数 trans() */
main()
{
  unsigned int num = 253;
  int scale[]={2,3,10,16,1};
  char str[33];
  int i;
  clrscr();
  for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++)
  {
    if(trans(num,scale[i],str))
      printf("%5d = %s(%d)\n",num,str,scale[i]);
    else
      printf("%5d => (%d) Error! \n",num,scale[i]);
  }
  printf("\n Press any key to quit...\n");
  getch();
}
相关文章
|
7月前
二进制中1的个数
二进制中1的个数
45 0
创建定长的数字,进制之间转化,二进制,十进制 字符串
创建定长的数字,进制之间转化,二进制,十进制 字符串
|
7月前
两个方法实现 任意两个进制间相互转换
两个方法实现 任意两个进制间相互转换
36 0
两个方法实现 任意两个进制间相互转换
|
7月前
|
C++
Acwing.26 二进制中1的个数
Acwing.26 二进制中1的个数
|
人工智能
进制数转换知识点总结
二进制和十六进制 用0和1表示各种信息 计算机的电路由逻辑门电路组成。一个逻辑门电路可以看成一个开关,每个开关的状态是“开"(高电位)或“关”(低电位),即对应于1或0
164 0
|
算法
34.二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
88 0
34.二进制中1的个数
|
开发者
二进制中1的个数(上)
二进制中1的个数(上)
二进制中1的个数(上)
|
存储 前端开发 程序员
二进制中1的个数(下)
二进制中1的个数(下)
二进制中1的个数(下)
求两个数二进制中不同位的个数
题目内容:两个int(32)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子: 7
【c++】关于数值进制以及进制之间转化
【c++】关于数值进制以及进制之间转化
204 0
【c++】关于数值进制以及进制之间转化