002A007D007E007E007E007E007E007FFFFDFFFDFFFDFFFDFFFDFFFDFFFDFFFD007F007C002300370020002A002A003900380035003A00380038003800380037003D这是一部分的16进制,怎么以4个为单位转成10进制?
比如  002A007D007E   转后成  42,125,126   转后用逗号隔开

解决方案 »

  1.   

    string str = "002A007D007E007E007E007E007E007FFFFDFFFDFFFDFFFDFFFDFFFDFFFDFFFD007F007C002300370020002A002A003900380035003A00380038003800380037003D";
                string temp = "";            for (int i = 0; i < str.Length / 4; i++)
                {
                    temp += (Convert.ToInt32(str.Substring(0, 4), 16)).ToString() + ",";
                    str = str.Substring(4);
                }            this.lab10.Text = temp.Substring(0, temp.Length - 1);
      

  2.   

    string s = "002A007D007E007E007E007E007E007FFFFDFFFDFFFDFFFDFFFDFFFDFFFDFFFD007F007C002300370020002A002A003900380035003A00380038003800380037003D";
    var rs = Regex.Matches(s, @".{4}").Cast<Match>().Select(m => Convert.ToInt32(m.Value, 16).ToString()).ToArray();
    string r = string.Join(",", rs);
    Response.Write(r);
      

  3.   

    支持linq写法。再给一个public static string HexToString(string hex) {
        return string.Join(",", Enumerable.Range(0, hex.Length)
                         .Where(x => x % 4 == 0)
                         .Select(x => Convert.ToInt32(hex.Substring(x, 4), 16).ToString()));
    }
      

  4.   

                string str = string.Join(",", Regex.Matches("002A007D007E007E007E007E007E007FFFFDFFFDFFFDFFFDFFFDFFFDFFFDFFFD007F007C002300370020002A002A003900380035003A00380038003800380037003D", @"(?i)[a-f0-9]{4}").OfType<Match>().Select(t => Convert.ToInt32(t.Value, 16)).ToArray());
      

  5.   

    呵呵,有意思的帖子。喜欢linq的那个。
      

  6.   


    因为  for (int i = 0; i < str.Length / 4; i++)循环只执行(str.Length / 4)-1次,可能执行会少4个单位,应该改成 for (int i = 0; i <= str.Length / 4; i++),但刚好这道题提供的字符是132的长度,所以结果是一样的,直接上执行后的图