⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 二.八.十.十六进制转换程序的函数.cpp

📁 这几个是本人整理的.cpp程序
💻 CPP
字号:
发布人:小草 发布时间:2002-12-6 11:46:54 
----------------------------------------------------------------------- 
 
这是二.八.十.十六进制转换程序的函数


int er_ba(char a[],int count,char s[])
{int number=1,j=0,sum=0;
 char s2[43];
 if (count==-2) return -2;
 for (;count>=0;) /*按照2转8的421规则,从最右边开始,2所对应的8是先是1,再是2,再是4,再把这三位中2进制是1的数相加,就是8进制的最低位。然后再算后往左推,,*/
     {number=1;
      while(number<5)
      {if (a[count--]=='1')
    sum=sum+number;
       if (count==-1) break;
       number=number*2;}
      s2[j++]=sum;
      sum=0;   }
 s2[j--]='\0';
 while(1)
 {if (j==0) break;
  if (s2[j]==0)
      j--;
  else
      break;}
 for (count=0;count<=j;count++)
     s[count]=s2[j-count]+48;
 s[count]='\0';
 return j;
}

/*后面的算法都是书上说的算法,我就不说了*/

int er_shi(char a[],int count,char s[])
{int i=0,j=0,x,count2;
 unsigned long sum=0;
 char s2[36];
 if (count>32 || count==-2) return -2;
 count2=count;
 for (;i<=count2;i++)
     {if (a[count]=='1')
   x=1;
      if (a[count]=='0')
   x=0;
      sum=sum+x*pow(2,i);
      count--;}
 i=0;
 while(1)
 {s2[i++]=sum%10;
  sum=sum/10;
  if (sum<1) break;}
 s2[i--]='\0';
 for (;j<=i;j++)
     s[j]=s2[i-j]+48;
 s[j]='\0';
 return i;
}

int er_shiliu(char a[],int count,char s[])
{int number,j=0,sum=0;
 char s2[36];
 if (count==-2) return -2;
 for (;count>=0;)
     {number=1;
      while(number<9)
      {if (a[count--]=='1')
    sum=sum+number;
       if (count==-1) break;
       number*=2;}
      if (sum>9)
   s2[j]=sum-10+'A';
      else
   s2[j]=sum+48;
      j++;
      sum=0;}
 s2[j--]='\0';
 while(1)
 {if (j==0) break;
  if (s2[j]=='0')
      j--;
  else
      break;}
 for (count=0;count<=j;count++)
     s[count]=s2[j-count];
 s[count]='\0';
 return j;
}

int ba_er(char b[],int count,char s[])
{int i,j=0;
 s[0]='0';
 if (count==-2) return -2;
 for (i=0;i<=count;i++)
     {switch(b[i])
      {case '0': s[++j]='0'; s[++j]='0'; s[++j]='0'; break;
       case '1': s[++j]='0'; s[++j]='0'; s[++j]='1'; break;
       case '2': s[++j]='0'; s[++j]='1'; s[++j]='0'; break;
       case '3': s[++j]='0'; s[++j]='1'; s[++j]='1'; break;
       case '4': s[++j]='1'; s[++j]='0'; s[++j]='0'; break;
       case '5': s[++j]='1'; s[++j]='0'; s[++j]='1'; break;
       case '6': s[++j]='1'; s[++j]='1'; s[++j]='0'; break;
       case '7': s[++j]='1'; s[++j]='1'; s[++j]='1'; break;}}
 s[j+1]='\0';
 return j;
}

int ba_shi(char b[],int count,char s[])
{char s2[130];
 int sc,s2c;
 if (count==-2) return -2;
 s2c=ba_er(b,count,s2);
 sc=er_shi(s2,s2c,s);
 return sc;
}

int ba_shiliu(char b[],int count,char s[])
{char s2[130];
 int sc,s2c;
 s2c=ba_er(b,count,s2);
 sc=er_shiliu(s2,s2c,s);
 return sc;
}

int shi_er(char x[],int count,char s[])
{int i,j=0,t;
 unsigned long x_s=0;
 char s2[130];
 if (count==-2) return -2;
 for (i=count;i>=0;i--)
     {t=x[i]-48;
      x_s+=t*pow(10,j);
      j++;}
 i=0;
 while(1)
 {s2[i]=x_s%2;
  x_s/=2;
  i++;
  if (x_s==0) break; }

  s[0]='0';
  s2[i--]='\0';
  for (j=0;j<=i;j++)
      s[j+1]=s2[i-j]+48;
 s[j+1]='\0';
 return j;
}

int shi_ba(char x[],int count,char s[])
{char s2[130];
 int sc,s2c;
 if (count==-2) return -2;
 s2c=shi_er(x,count,s2);
 sc=er_ba(s2,s2c,s);
 return sc;
}

int shi_shiliu(char x[],int count,char s[])
{char s2[130];
 int sc,s2c;
 if (count==-2) return -2;
 s2c=shi_er(x,count,s2);
 sc=er_shiliu(s2,s2c,s);
 return sc;
}

int shiliu_er(char n[],int count,char s[])
{int i,j=0;
 s[0]='0';
 if (count==-2) return -2;
 for(i=0;i<=count;i++)
     {switch(n[i])
      {case '0': s[++j]='0'; s[++j]='0'; s[++j]='0'; s[++j]='0'; break;
       case '1': s[++j]='0'; s[++j]='0'; s[++j]='0'; s[++j]='1'; break;
       case '2': s[++j]='0'; s[++j]='0'; s[++j]='1'; s[++j]='0'; break;
       case '3': s[++j]='0'; s[++j]='0'; s[++j]='1'; s[++j]='1'; break;
       case '4': s[++j]='0'; s[++j]='1'; s[++j]='0'; s[++j]='0'; break;
       case '5': s[++j]='0'; s[++j]='1'; s[++j]='0'; s[++j]='1'; break;
       case '6': s[++j]='0'; s[++j]='1'; s[++j]='1'; s[++j]='0'; break;
       case '7': s[++j]='0'; s[++j]='1'; s[++j]='1'; s[++j]='1'; break;
       case '8': s[++j]='1'; s[++j]='0'; s[++j]='0'; s[++j]='0'; break;
       case '9': s[++j]='1'; s[++j]='0'; s[++j]='0'; s[++j]='1'; break;
       case 'A':
       case 'a': s[++j]='1'; s[++j]='0'; s[++j]='1'; s[++j]='0'; break;
       case 'B':
       case 'b': s[++j]='1'; s[++j]='0'; s[++j]='1'; s[++j]='1'; break;
       case 'C':
       case 'c': s[++j]='1'; s[++j]='1'; s[++j]='0'; s[++j]='0'; break;
       case 'D':
       case 'd': s[++j]='1'; s[++j]='1'; s[++j]='0'; s[++j]='1'; break;
       case 'E':
       case 'e': s[++j]='1'; s[++j]='1'; s[++j]='1'; s[++j]='0'; break;
       case 'F':
       case 'f': s[++j]='1'; s[++j]='1'; s[++j]='1'; s[++j]='1'; break;}  }
 s[j+1]='\0';
 return j;
}

int shiliu_ba(char n[],int count,char s[])
{char s2[130];
 int sc,s2c;
 s2c=shiliu_er(n,count,s2);
 sc=er_ba(s2,s2c,s);
 return sc;
}

int shiliu_shi(char n[],int count,char s[])
{char s2[130];
 int sc,s2c;
 if (count==-2) return -2;
 s2c=shiliu_er(n,count,s2);
 sc=er_shi(s2,s2c,s);
 return sc;
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -