• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#中各个进制数据之间的相互转换

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、 十进制数据转换为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进制数据即可。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#遍历类中的方法名称发布时间:2022-07-14
下一篇:
C语言const发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap