C#で10進数を8進数に変換する方法をわかりやすく解説
C#プログラミングにおいて、10進数の値を8進数に変換したい場面は少なくありません。本記事では、whileループと剰余演算を使った基本的な変換方法を、サンプルコードとともにわかりやすく解説します。
10進数から8進数への変換の仕組み
10進数を8進数に変換するには、以下の手順で処理を行います。
- 対象となる10進数の値に対してwhileループを実行し、8で割った余り(剰余)を8進数用の配列に格納します。
- 次に、その数値を8で割り、商を新たな対象の値として処理を繰り返します。
- 数値が0になった時点でループを終了し、格納した余りを逆順に出力すると、それが8進数表現となります。
変換処理のコア部分
変換の中心となる処理は以下の通りです。dec % 8 で余りを求めて配列に保存し、dec / 8 で数値を更新しています。
while (dec != 0) {
oct[i] = dec % 8;
dec = dec / 8;
i++;
}
完全なサンプルコード
それでは、実際に動作する完全なコードを見てみましょう。この例では、10進数の「12」を8進数に変換しています。実行結果は「14」と表示されます。
Example
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
int []oct = new int[50];
// 変換対象の10進数
int dec = 12;
int i = 0;
while (dec != 0) {
oct[i] = dec % 8;
dec = dec / 8;
i++;
}
// 余りを逆順に出力して8進数を完成させる
for (int j = i - 1; j >= 0; j--)
Console.Write(oct[j]);
Console.ReadKey();
}
}
}
コードのポイント
- 剰余の格納: dec % 8 の計算結果が、下の桁から順に配列へ保存されます。
- 逆順出力: 余りは下位桁から求まるため、出力時には配列を後ろから前に向かって走査しています。
- 終了条件: dec が 0 になった時点で変換が完了します。
この方法は、C#における基数変換の基本を理解するのに最適なアプローチです。Convert.ToString(12, 8) のような標準ライブラリを使えば1行で変換できますが、アルゴリズムの仕組みを学ぶうえで、この手動実装は非常に有益です。
-
MySQLのUNHEX()に相当するPHP関数とは?hex2bin()の使い方を解説
PHPにおけるMySQLのUNHEX()相当の関数MySQLのUNHEX()関数と同じ処理をPHPで行いたい場合は、hex2bin()関数を使用します。この関数は、16進数形式の文字列をバイナリデータ(元の文字列)に変換するもので、まさにMySQLのUNHEX()に相当する機能を持っています。hex2bin()の基本構文構文は以下の通りです。$anyVariableName = hex2bin(yourHexadecimalValue);引数には16進数の文字列を指定し、戻り値として変換後のバイナリデータが返されます。PHPでの実装例実際にhex2bin()を使用したサンプルコードを見てみまし
-
MatplotlibでMATLABのsurf(x, y, z, c)と同じ効果を実現する方法
MATLABの surf(x, y, z, c) と同じような3DサーフェスプロットをMatplotlibで描画する方法を、具体例を通して解説します。手順は以下の通りです。図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。新しい図を作成するか、既存の図をアクティブにします。サブプロット配置の一部として、図に ax(3D軸)を追加します。Numpyを使用して r、u、v、x、y、z のデータポイントを作成します。サーフェスプロットを作成します。図を表示するには、show() メソッドを使用します。コード例import matplotlib.pyplot as plt