C语言

十进制转d进制(d<10)

原理很简单,按照计算方法算出每一位后存入数组,倒序输出即可~

int main()
{
  int n,i=0,x,j,d;
  int arr[1000];
  scanf("%d%d",&n,&d);
  if(n==0)
    printf("0");
  else{
  while(n>0){        //想不起来的话把d设成2自己代入一遍
    x=n%d;
    n/=d;
    arr[i]=x;
    i++;
  }
  for(j=i-1;j>=0;j--){    //逆序输出
    printf("%d",arr[j]);
  }
  }
  return 0;
}

d进制转十进制(d<10)

int main()
{
  int n,x=1,num=0,d;
  scanf("%d%d",&n,&d);
  while(n>0){
    num+=(n%10)*x;    //拨出最后一位乘以位权
    n/=10;    //舍弃最后一位
    x*=d;    //位权增加
  }
  printf("%d",num);
  return 0;
}

十进制转十六进制

与前面的“十进制转d进制”差不多,只是用字符数组代替了整型数组

int main()
{
  int n,i=0,j;
  char arr[1000],brr[20]={"0123456789ABCDEF"};
  scanf("%d",&n);
  if(n==0)
    printf("0");
  else{
  while(n>0){
    arr[i]=brr[n%16];
    n/=16;
    i++;
  }
  for(j=i-1;j>=0;j--){
    printf("%c",arr[j]);
  }
  }
  return 0;
}

C++

在查找资料的时候发现C艹自带进制转换的函数,顺便记录一下~

oct 是八进制形式
dec 是十进制形式
hex 是十六进制形式(setiosflags(ios::uppercase)可转换为大写输出)
C语言没有专门的二进制转换,故只能规定位数输出二进制

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin>>n;
    cout<<bitset<8>(n)<<endl;
    cout<<oct<<n<<endl;
    cout<<dec<<n<<endl;
    cout<<setiosflags(ios::uppercase)<<hex<<n<<endl;
    return 0;
}