C#中各個進位資料之間的相互轉換

來源:互聯網
上載者:User

一、 十進位資料轉換為N進位資料

十進位資料Value,可以用如下公式表示為N精緻的資料。

Value = Xn * Math.Pow(Item, n) + Xn-1 * Math.Pow(Item, n-1) + .. + X2 * Math.Pow(Item, 1) + X1 * Math.Pow(Itm, 0) ;

其中Xn的範圍為(0 <= Xn < Item),n的範圍為(n>=2);

有上,我們可以得到十進位資料轉換為Item進位的資料的演算法如下:

Loop
  IF (value >= Item)
    第i位置的數值 = value % Item;
    value = value / Item;
  End IF;
  ELSE
    第i位置的數值 = value;
  END IF;
  i++;
End Loop;

故十進位的資料轉換為N進位的資料,代碼實現如下(注意:Item不要超過16進位,除非你自己修改Func中的方法)
/// <summary>
/// 10進位轉為Item進位
/// </summary>
/// <param name="value"></param>
/// <param name="item"></param>
/// <returns></returns>
protected string Pares10ToItem(double value, double item)
{
    double sub = 0;
    double pos = 0;
    double tmp = 0;
    double i = 1;
    string s = "";
    do
    {
        if (value >= item)
        {
            pos = value % item; // i位置上的數值
            value = value / item;
        }
        else
        {
            pos = value;
            value = 0;
        }
        s = (this.Func((int)pos)) + s;
        i++;

    } while (value > 0);

    return s;
}
/// <summary>
/// 擷取Item進位資料的各個位置上的數值
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
protected string Func(int s)
{
    string result = "";
    switch (s)
    {
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
        case 9:
            {
                result = s.ToString();
                break;
            }
        case 10:
            {
                result = "A";
                break;
            }
        case 11:
            {
                result = "B";
                break;
            }
        case 12:
            {
                result = "C";
                break;
            }
        case 13:
            {
                result = "D";
                break;
            }
        case 14:
            {
                result = "E";
                break;
            }
        case 15:
        default:
            {
                result = "F";
                break;
            }
    }
    return result;
}

二、 N進位資料轉換為十進位資料

這個就太簡單了,利用迴圈遍曆Value各個位置的資料Xn,用Xn*Math(N, n-1)的累計求和。即可。

 

三、非十進位資料之間的轉換:

這個我們可以分兩步來做:第一步將Value_X轉換為十進位資料Velue_10;第二步將Value_10轉換為Value_N進位資料即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.