C语言进制转换相关函数

C语言进制转换相关函数

所需头文件

#include <stdio.h>
#include <string>
#include <string.h>
#include <map>
#include <iostream>

using namespace std;

十进制转二进制

//十进制转二进制 
string Decimal_to_Binary(int decimal, int bits)// decimal为所要转换的十进制数,bits为输出位数 
{
 char bin[bits+2];
 bin[0] = '0';
 bin[1] = 'b';
 
 
 int quotient = decimal; //商
 int remainder = 0; //余数
 
 int i;
 
 for(i=bits+2; i>2; i--)
 {
  remainder = quotient % 2;
  switch(remainder)
  {
   case 0:
    {
     bin[i-1] = '0';
     break;
    }
   case 1:
    {
     bin[i-1] = '1';
     break;
    }
   default:
    {
     break;
    }
  }
  quotient = quotient / 2;
 }
 return bin;
}

十进制转八进制

//十进制转八进制 
string Decimal_to_Octal(int decimal, int bits)// decimal为所要转换的十进制数,bits为输出位数
{
 char octal[bits+1];
 octal[0] = '0';
 
 
 int quotient = decimal; //商
 int remainder = 0; //余数
 
 int i;
 
 for(i=bits+1; i>1; i--)
 {
  remainder = quotient % 8;
  switch(remainder)
  {
   case 0:
    {
     octal[i-1] = '0';
     break;
    }
   case 1:
    {
     octal[i-1] = '1';
     break;
    }
   case 2:
    {
     octal[i-1] = '2';
     break;
    }
   case 3:
    {
     octal[i-1] = '3';
     break;
    }
   case 4:
    {
     octal[i-1] = '4';
     break;
    }
   case 5:
    {
     octal[i-1] = '5';
     break;
    }
   case 6:
    {
     octal[i-1] = '6';
     break;
    }
   case 7:
    {
     octal[i-1] = '7';
     break;
    }
   default:
    {
     break;
    }
  }
  quotient = quotient / 8;
 }
 return octal;
}

十进制转十六进制

//十进制转十六进制 
string Decimal_to_Hexadecimal(int decimal, int bits)// decimal为所要转换的十进制数,bits为输出位数
{
 char hexadecimal[bits+2];
 hexadecimal[0] = '0';
 hexadecimal[1] = 'x';
 
 
 int quotient = decimal; //商
 int remainder = 0; //余数
 
 int i;
 
 for(i=bits+2; i>2; i--)
 {
  remainder = quotient % 16;
  switch(remainder)
  {
   case 0:
    {
     hexadecimal[i-1] = '0';
     break;
    }
   case 1:
    {
     hexadecimal[i-1] = '1';
     break;
    }
   case 2:
    {
     hexadecimal[i-1] = '2';
     break;
    }
   case 3:
    {
     hexadecimal[i-1] = '3';
     break;
    }
   case 4:
    {
     hexadecimal[i-1] = '4';
     break;
    }
   case 5:
    {
     hexadecimal[i-1] = '5';
     break;
    }
   case 6:
    {
     hexadecimal[i-1] = '6';
     break;
    }
   case 7:
    {
     hexadecimal[i-1] = '7';
     break;
    }
   case 8:
    {
     hexadecimal[i-1] = '8';
     break;
    }
   case 9:
    {
     hexadecimal[i-1] = '9';
     break;
    }
   case 10:
    {
     hexadecimal[i-1] = 'a';
     break;
    }
   case 11:
    {
     hexadecimal[i-1] = 'b';
     break;
    }
   case 12:
    {
     hexadecimal[i-1] = 'c';
     break;
    }
   case 13:
    {
     hexadecimal[i-1] = 'd';
     break;
    }
   case 14:
    {
     hexadecimal[i-1] = 'e';
     break;
    }
   case 15:
    {
     hexadecimal[i-1] = 'f';
     break;
    }
   default:
    {
     break;
    }
  }
  quotient = quotient / 16;
 }
 return hexadecimal;
}

二进制转十进制

//二进制转十进制 
int Binary_to_Decimal(char Binary[])// decimal为所要转换的二进制数,输入时加上前缀“0b” 
{
 int length = strlen(Binary);
 int i;
 int decimal = 0;
 for(int i=2; i<length; i++)
 {
  decimal = decimal * 2;
  switch(Binary[i])
  {
   case '0':
    {
     break;
    }
   case '1':
    {
     decimal = decimal + 1;
     break;
    }
   default:
    {
     break;
    }
  }
 }
 return decimal;
}

八进制转十进制

//八进制转十进制 
int Octal_to_Decimal(char Octal[])// decimal为所要转换的二进制数,输入时加上前缀“0” 
{
 int length = strlen(Octal);
 int i;
 int decimal = 0;
 for(int i=1; i<length; i++)
 {
  decimal = decimal * 8;
  switch(Octal[i])
  {
   case '0':
    {
     break;
    }
   case '1':
    {
     decimal = decimal + 1;
     break;
    }
   case '2':
    {
     decimal = decimal + 2;
     break;
    }
   case '3':
    {
     decimal = decimal + 3;
     break;
    }
   case '4':
    {
     decimal = decimal + 4;
     break;
    }
   case '5':
    {
     decimal = decimal + 5;
     break;
    }
   case '6':
    {
     decimal = decimal + 6;
     break;
    }
   case '7':
    {
     decimal = decimal + 7;
     break;
    }
   default:
    {
     break;
    }
  }
 }
 return decimal;
}

十六进制转十进制

//十六进制转十进制 
int Hexadecimal_to_Decimal(char Hexadecimal[])// decimal为所要转换的二进制数,输入时加上前缀“0x” 
{
 int length = strlen(Hexadecimal);
 int i;
 int decimal = 0;
 for(int i=2; i<length; i++)
 {
  decimal = decimal * 16;
  switch(Hexadecimal[i])
  {
   case '0':
    {
     break;
    }
   case '1':
    {
     decimal = decimal + 1;
     break;
    }
   case '2':
    {
     decimal = decimal + 2;
     break;
    }
   case '3':
    {
     decimal = decimal + 3;
     break;
    }
   case '4':
    {
     decimal = decimal + 4;
     break;
    }
   case '5':
    {
     decimal = decimal + 5;
     break;
    }
   case '6':
    {
     decimal = decimal + 6;
     break;
    }
   case '7':
    {
     decimal = decimal + 7;
     break;
    }
   case '8':
    {
     decimal = decimal + 8;
     break;
    }
   case '9':
    {
     decimal = decimal + 9;
     break;
    }
   case 'a':
    {
     decimal = decimal + 10;
     break;
    }
   case 'b':
    {
     decimal = decimal + 11;
     break;
    }
   case 'c':
    {
     decimal = decimal + 12;
     break;
    }
   case 'd':
    {
     decimal = decimal + 13;
     break;
    }
   case 'e':
    {
     decimal = decimal + 14;
     break;
    }
   case 'f':
    {
     decimal = decimal + 15;
     break;
    }
   default:
    {
     break;
    }
  }
 }
 return decimal;
}
  • 18
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值