Javaプログラム1つで任意の基数を別の基数に変換する方法
ここでは、8進数を例に、2進数や16進数など他の基数への変換を単一のJavaプログラムで行う方法を解説します。ポイントは、Integer.parseInt()とInteger.toString()を組み合わせることで、ソース基数から目的の基数へ簡単に変換できる点です。
サンプルコード
public class Demo{
public static String base_convert(String num, int source, int destination){
return Integer.toString(Integer.parseInt(num, source), destination);
}
public static void main(String[] args){
String my_num = "345";
int source = 8;
int destination = 2;
System.out.println("Converting the number from octal to binary: "+ base_convert (my_num, source, destination));
destination = 10;
System.out.println("Converting the number from octal to decimal : "+ base_convert (my_num, source, destination));
destination = 16;
System.out.println("Converting the number from octal to hexadecimal: "+ base_convert (my_num, source, destination));
}
}実行結果
Converting the number from octal to binary: 11100101 Converting the number from octal to decimal : 229 Converting the number from octal to hexadecimal: e5
コードの仕組み
まず、Demoというクラスの中に、base_convertというメソッドが定義されています。このメソッドは次の2段階で処理を行います。
第1段階: Integer.parseInt(num, source)によって、入力された文字列を「ソース基数(この例では8進数)」として解釈し、整数値に変換します。
第2段階: Integer.toString(値, destination)によって、その整数値を「目的の基数(2進数・10進数・16進数など)」の文字列表現に変換して返します。
mainメソッドでは、変換対象の数値(my_num = "345")、ソース基数(source = 8)、そして目的の基数(destination)を定義しています。あとはbase_convertメソッドにこれらの値を引数として渡すだけで、2進数・10進数・16進数への変換結果が順番に出力されます。
応用のヒント
この手法は8進数に限らず利用できます。例えば、sourceを2にすれば2進数からの変換も可能です。ただし、Integer.parseInt()が対応しているのは2〜36進数までである点に注意してください。また、非常に大きな数値を扱う場合は、Long.parseLong()やBigInteger(String val, int radix)を使うとオーバーフローを回避できます。
-
Javaで平行四辺形の面積を求める方法|初心者向けサンプルコード付き解説
この記事では、Javaを使って平行四辺形の面積を求める方法を詳しく解説します。 平行四辺形とは? 平行四辺形とは、向かい合う2組の辺がそれぞれ平行で、かつ長さが等しい四角形のことです。長方形やひし形も平行四辺形の一種に含まれます。平行四辺形には「底辺」と、底辺からその対辺までの垂直距離を表す「高さ」が存在します。 面積を求める公式 平行四辺形の面積は、次のシンプルな公式で計算できます。 面積 = 底辺 × 高さ つまり b × h 以下はそのイメージ図です。 入力例 たとえば、次の値が与えられたとします。 底辺 : 6 高さ : 8 出力例 このとき、期待される出力は次のとおりです。 平行
-
Pythonで10進数を2進数・8進数・16進数に素早く変換する方法
Pythonには、10進数の数値を2進数、8進数、16進数といった他の基数へ変換するための便利な組み込み関数が用意されています。例えば、10進数の「19」は、2進数では「10011」、8進数では「23」、16進数では「13」と表現されます。 変換結果には、それぞれ2進数なら「0b」、8進数なら「0o」、16進数なら「0x」というプレフィックス(接頭辞)が自動的に付与されます。この表記を目印にすることで、その数値がどの基数で表されているのかをひと目で判別できるのが特徴です。 サンプルコード # bin()、oct()、hex() 関数を使用 x = 242 print(The number