zoukankan      html  css  js  c++  java
  • C#中数据进制转换

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

     


    //成功一定有方法,失败一定有原因。
  • 相关阅读:
    SVN使用之分支、合并
    eq相等 ,ne、neq不相等 EL表达式
    PLSQL:plsql中文乱码,显示问号
    mysql中实现行号,oracle中的rowid
    安装完QQ必须要删除掉的几个恐怖文件
    关于table的一些兼容性问题
    Javascript事件绑定的几种方式
    jQuery中的一些正则匹配表达式
    将java类的泛型集合转换成json对象
    python登录豆瓣,发帖
  • 原文地址:https://www.cnblogs.com/webapi/p/2415190.html
Copyright © 2011-2022 走看看