C#で10進数を他の基数に素早く変換する方法
C#で10進数を他の基数に変換する基本手法
10進数を2進数や8進数など他の基数へすばやく変換したい場合は、Stack(スタック)を活用すると効率的です。スタックはLIFO(後入れ先出し)構造を持つため、剰余を順番に積み上げてから逆順に取り出すだけで、正しい桁順の結果を簡単に得られます。以下で具体例を見ていきましょう。
1. 変換先の基数を設定する
まず、変数「baseNum」に変換先の基数を設定します。ここでは2進数に変換するため、2を指定します。
int baseNum = 2;
同じ手順で、8進数や10進数など、他の基数にも簡単に対応できます。
// 8進数の場合 int baseNum = 8; // 10進数の場合 int baseNum = 10;
2. スタックを使って剰余を計算する
基数を決めたら、スタックを作成し、対象の数値を基数で割りながら剰余を求めてスタックにプッシュしていきます。
ここで、nは変換対象となる10進数です。
Stack s = new Stack();
do {
s.Push(n % baseNum);
n /= baseNum;
} while (n != 0);この処理では、数値nを基数で割った余りをスタックに格納し、商を新たなnとして繰り返し計算します。nが0になった時点でループが終了します。
3. スタックから要素を取り出して結果を得る
スタックへの格納が完了したら、Popメソッドで要素を1つずつ取り出します。スタックは後入れ先出しの構造なので、下位の桁から順に格納された値が上位の桁から順に取り出され、正しい並びの結果が得られます。
実行例:45を2進数に変換
例えば、数値nが45の場合、2進数(基数2)に変換すると次の結果になります。
Result... 101101
実際、45を2進数で表すと「101101」となり、32 + 8 + 4 + 1 = 45 と一致することから、正しく変換できていることが確認できます。
-
Pythonで16進数の文字列を10進数に変換する方法を解説
この記事では、16進数の文字列を10進数に変換する問題の解決策について詳しく解説します。課題の概要16進数形式の文字列が与えられたとき、それを対応する10進数の値に変換することを目標とします。例えば、16進数の「F」は10進数では「15」に相当します。この問題には主に2つのアプローチがあります。力ずく(ブルートフォース)な手法:int関数を使った明示的な型変換組み込みモジュールを活用する手法:astモジュールのliteral_eval関数を使用方法1:int関数を使った変換最もシンプルで一般的な方法は、Pythonの組み込み関数であるint()を利用するものです。この関数は2つの引数を受け取り
-
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