基本変換C言語の実装
必要なヘッダーファイル
#include <stdio.h>
#include <string>
#include <string.h>
#include <map>
#include <iostream>
using namespace std;
10進数から2進数
// 10進数から2
進数の文字列Decimal_to_Binary(int decimal、int bits)// Decimalは変換される10進数、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;
}
10進数から8進数
// 10進数から8進数の
文字列Decimal_to_Octal(int decimal、int bits)// Decimalは変換される10進数、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;
}
10進数から16進数
// 10進数から16進数の
文字列Decimal_to_Hexadecimal(int decimal、int bits)// Decimalは変換される10進数、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;
}
2進数から10進数
// 2進数から10進数
intBinary_to_Decimal(char Binary [])// 10進数は変換される2進数で、入力時に「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;
}
OctalからDecimal
// Octalから
Decimalint Octal_to_Decimal(char Octal [])// Decimalは変換される2進数であり、入力時にプレフィックス「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;
}
16進数から10進数
// 16進数から10
進数intHexadecimal_to_Decimal(char Hexadecimal [])// Decimalは変換される2進数であり、入力時に「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;
}