C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で10進数を8進数に変換する方法を解説

C#で10進数を8進数に変換するには、whileループを使って10進数の値を8で割り続け、その都度発生する余りを配列に格納していくのが基本的な手法です。

変換の仕組み

まず、10進数の値を8で割った余り(剰余)を求め、それを8進数用に用意した配列に順番に格納します。これは「mod 8」演算によって実現できます。

while (dec != 0) {
    oct[i] = dec % 8;
    dec = dec / 8;
    i++;
}

次に、同じ数を8で割って商を新しい値として更新します。この処理を10進数が0になるまで繰り返すことで、各桁の余りがすべて配列に記録されます。余りは下位の桁から順に格納されるため、最終的な出力時には配列を逆順に読み出す点に注意しましょう。

完全なサンプルコード

以下は、10進数の「18」を8進数に変換する完全なC#プログラムです。

using System;

namespace Demo {
    class Program {
        static void Main(string[] args) {

            int[] oct = new int[30];

            // 変換対象の10進数
            int dec = 18;

            int i = 0;
            while (dec != 0) {
                oct[i] = dec % 8;
                dec = dec / 8;
                i++;
            }

            // 余りは逆順に格納されているため、後ろから出力する
            for (int j = i - 1; j >= 0; j--)
                Console.Write(oct[j]);

            Console.ReadKey();
        }
    }
}

実行結果

このプログラムを実行すると、以下の出力が得られます。

22

10進数の18は、8進数では「22」と表されます。実際に確認すると、18 ÷ 8 の商は 2、余りも同様に計算を重ねることで 2 と 2 の組み合わせになり、正しく変換できていることがわかります。

補足:Convert.ToStringメソッドを使う方法

なお、.NET標準ライブラリを利用すれば、より簡単に変換することも可能です。Convert.ToString メソッドの第2引数に基数「8」を指定すると、1行で8進数文字列を取得できます。

string result = Convert.ToString(18, 8); // "22"

自前でアルゴリズムを実装したい場合はwhileループ方式、手軽に処理したい場合はConvertクラスを使うとよいでしょう。

  1. JavaScriptで10進数を16進数に変換する方法をわかりやすく解説

    JavaScriptでは、数値クラスが持つ toString メソッドを使うことで、10進数の数値を簡単に16進数の文字列へ変換できます。toString メソッドは基数(base)を引数として受け取るため、基数に「16」を指定すれば、その数値を16進数表記の文字列として取得できます。toStringメソッドで10進数から16進数へ変換する例console.log(Number(255).toString(16)) console.log(Number(17).toString(16))出力結果ff 11このように、255 は ff、17 は 11 という16進数の文字列に変換されます。par

  2. JavaScriptで画像をBlobに変換する方法【サンプルコード&解説つき】

    JavaScriptで画像をBlobに変換するには?Webアプリケーション開発では、画像などのファイルデータを「Blob(Binary Large Object:バイナリラージオブジェクト)」として扱いたい場面が多くあります。たとえば、画像のアップロード処理やCanvasへの描画、サーバーへのデータ送信などがその代表例です。JavaScriptでは、fetch()メソッドとBlobオブジェクトを組み合わせることで、URLから取得した画像を簡単にBlobへ変換できます。以下に実際のサンプルコードを示します。サンプルコード<!DOCTYPE html> <html lang=&q