2014年05月28日

C#で16進数から10進数の変換

   このエントリーをはてなブックマークに追加 Clip to Evernote
どう書く?orgに感謝を込めて」シリーズ その11

■問題 (出題者:shojiHIDAKA さん)

16進数を10進数に変換してください。
ただし、入出力は文字列とし、次の変換は最低必ずできなければいけないこととします。
0x12437308CCB6 →20080902065334
0x2C9C1227FC6520B →200904012311450123
あわせて、扱える最大の整数も明らかにしてください。

Convertクラスを使えば簡単ですね。
この問題については、クラスライブラリ使わずに書くのは時間の無駄だと判断。 10進から16進に変換するコードも書いています。

■C#で書いたコード
using System;

namespace Doukaku.Org {
    class Program {
        static void Main(string[] args) {

            // Convertクラスを利用
            long num = Convert.ToInt64("0x12437308CCB6", 16);
            Console.WriteLine(num);
            long num2 = Convert.ToInt64("0x2C9C1227FC6520B", 16);
            Console.WriteLine(num2);

            // 先頭の 0x は省略可能
            long num3 = Convert.ToInt64("8000000000000000", 16);
            Console.WriteLine(num3);
            long num4 = Convert.ToInt64("7fffffffffffffff", 16);
            Console.WriteLine(num4);

            // 10進数から16進数への変換も Convertクラスを使う。
            Console.WriteLine(Convert.ToString(20080902065334, 16));
            Console.WriteLine(Convert.ToString(200904012311450123, 16));
            Console.WriteLine(Convert.ToString(long.MinValue, 16));
            Console.WriteLine(Convert.ToString(long.MaxValue, 16));

            Console.ReadKey();
        }
    }
}


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52369856