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();
}
相关文章
|
3月前
|
C语言
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
这篇文章展示了如何使用栈(包括顺序栈和链栈)实现将十进制数值转换成八进制数值的方法,通过C语言编程演示了两种栈的实现方式和使用场景。
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
创建定长的数字,进制之间转化,二进制,十进制 字符串
创建定长的数字,进制之间转化,二进制,十进制 字符串
|
6月前
两个方法实现 任意两个进制间相互转换
两个方法实现 任意两个进制间相互转换
29 0
两个方法实现 任意两个进制间相互转换
进制之间的转换
说明:进制之间的转换有多种,我只列出自己常使用的方法。 十进制:十进制是以 0-9 这九个数字组成的,也是我们日常生活中最常见的数字 二进制:二进制是 0 和 1 这两个数字组成的,一般常用于计算机中表示 八进制:八进制是 0-7 这八个数字组成的,为了区分,一般开头以 0 开头 十六进制:十六进制由 0-9 和A-F 组成,从 A-F 为 10-15,为了区别,开头以 0x 开头
|
算法 Python
一日一技:如何统计一个数字的二进制值里面有多少个1
一日一技:如何统计一个数字的二进制值里面有多少个1
240 0
|
人工智能
进制数转换知识点总结
二进制和十六进制 用0和1表示各种信息 计算机的电路由逻辑门电路组成。一个逻辑门电路可以看成一个开关,每个开关的状态是“开"(高电位)或“关”(低电位),即对应于1或0
155 0
C#中字符串是否可以转换为数值
C#中字符串是否可以转换为数值
【c++】关于数值进制以及进制之间转化
【c++】关于数值进制以及进制之间转化
196 0
【c++】关于数值进制以及进制之间转化
统计二进制中1的个数,,,写一个函数,返回参数二进制中1的个数 写一个代码判断一个数字是不是2的n次方
统计二进制中1的个数,,,写一个函数,返回参数二进制中1的个数 写一个代码判断一个数字是不是2的n次方
128 0