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();
}
相关文章
|
1月前
两个方法实现 任意两个进制间相互转换
两个方法实现 任意两个进制间相互转换
15 0
两个方法实现 任意两个进制间相互转换
进制之间的转换
说明:进制之间的转换有多种,我只列出自己常使用的方法。 十进制:十进制是以 0-9 这九个数字组成的,也是我们日常生活中最常见的数字 二进制:二进制是 0 和 1 这两个数字组成的,一般常用于计算机中表示 八进制:八进制是 0-7 这八个数字组成的,为了区分,一般开头以 0 开头 十六进制:十六进制由 0-9 和A-F 组成,从 A-F 为 10-15,为了区别,开头以 0x 开头
|
算法 Python
一日一技:如何统计一个数字的二进制值里面有多少个1
一日一技:如何统计一个数字的二进制值里面有多少个1
182 0
|
人工智能
进制数转换知识点总结
二进制和十六进制 用0和1表示各种信息 计算机的电路由逻辑门电路组成。一个逻辑门电路可以看成一个开关,每个开关的状态是“开"(高电位)或“关”(低电位),即对应于1或0
134 0
求两个数二进制中不同位的个数
题目内容:两个int(32)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子: 7
C#中字符串是否可以转换为数值
C#中字符串是否可以转换为数值
|
存储 前端开发 程序员
二进制中1的个数(下)
二进制中1的个数(下)
二进制中1的个数(下)
【c++】关于数值进制以及进制之间转化
【c++】关于数值进制以及进制之间转化
156 0
【c++】关于数值进制以及进制之间转化
统计二进制中1的个数,,,写一个函数,返回参数二进制中1的个数 写一个代码判断一个数字是不是2的n次方
统计二进制中1的个数,,,写一个函数,返回参数二进制中1的个数 写一个代码判断一个数字是不是2的n次方
111 0
求两个数的二进制数中不同位的个数
两个整数进行异或的结果是:相同位异或结果为0,不同位异或结果为1,进一步将问题转化为求这两个整数异或结果的二进制位为1的个数即所求两个数二进制数中不同位的合数。