C言語による2進数と10進数を相互に変換するサンプルプログラムです。IPv4アドレス程度(0〜255)の簡易的な変換をコマンドライン引数から行います。
前提条件・仕様
- 第1引数にモード(2進数から10進数への変換は
2、10進数から2進数への変換は10)を指定します。 - 第2引数に変換したい数値を指定します。
サンプルコード
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int flg;
int decimal = 0;
int binary = 0;
int base = 1;
int tmp = 0;
if (argc < 3) {
printf("Usage: %s [2|10] [value]\n", argv[0]);
return 1;
}
flg = atoi(argv[1]);
if (flg == 2)
{
binary = atoi(argv[2]);
tmp = binary;
/* 2進数を10進数に変換 */
while (binary > 0) {
decimal = decimal + (binary % 10) * base;
binary = binary / 10;
base = base * 2;
}
/* 変換した10進数の出力 */
printf("入力(2進): %08d -> 10進数: %d\n", tmp, decimal);
}
else if (flg == 10)
{
decimal = atoi(argv[2]);
tmp = decimal;
/* 10進数を2進数に変換 */
while (decimal > 0) {
binary = binary + (decimal % 2) * base;
decimal = decimal / 2;
base = base * 10;
}
/* 変換した2進数の出力 */
printf("入力(10進): %d -> 2進数: %08d\n", tmp, binary);
}
else
{
printf("第1引数には 2 または 10 を指定してください。\n");
}
return 0;
}
実行方法と出力例
コンパイルして実行する際の例です。
コンパイル
gcc -o conv_sample conv_sample.c
1. 2進数から10進数への変換(例: 1010)
$ ./conv_sample 2 1010
入力(2進): 00001010 -> 10進数: 10
2. 10進数から2進数への変換(例: 10)
$ ./conv_sample 10 10
入力(10進): 10 -> 2進数: 00001010
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月26日
- 変更引用タグ内に記述されていたコードを正しい構文のコードブロックに変更しました。
- 追加decimal変数の初期化漏れを修正し、コンパイル・実行方法と実行例を追加しました。

