devlights
10/7/2016 - 7:40 AM

10進数から16進数へ

10進数から16進数へ

// http://www.asahi-net.or.jp/~ax2s-kmtn/ref/bdh.html 参照
// https://msdn.microsoft.com/ja-jp/library/bb531208.aspx 参照
//
// 10進数から16進数へ変換するには、10進数を16で割って
// その商をさらに16で割る、またその商を16で割って…と
// 余りを出しながら商が0になるまで繰り返します。そして最後の余りを先頭に下から順に並べます。
int target = 230;

var table = new Dictionary<int, string>()
{
    {10, "A"},
    {11, "B"},    
    {12, "C"},
    {13, "D"},
    {14, "E"},
    {15, "F"}
};

var lists = new List<string>();
int div = target;
while (true)
{
    var mod = div % 16;
    div = div / 16;
    
    lists.Add(table.ContainsKey(mod) ? table[mod] : mod.ToString());
    
    if (div == 0)
    {
        break;
    }
}

lists.Reverse();
lists.Dump();