本帖最后由 lxcnn 于 2010-09-23 07:55:13 编辑

解决方案 »

  1.   


    using System;public object MYDecode(object Pass)
    {
    object[] code = new object[8];
    object tlo = null;
    code[2]= 0XFC;
    code[4]= 0XF0;
    code[6]= 0XC0;
    Source_Len = Microsoft.VisualBasic.Strings.Len(Pass);
    Count = 0;
    ln = 0;
    a1 = 0;
    a2 = 0;
    c1 = 2;
    c2 = 0;
    ind = 0;
    tlo = 0;
    while (Count < Source_Len)
    {
      mp = Pass.ToString().Substring(Count, 1);
      ac = Convert.ToInt32(mp[0]);
      if (ac - 0X3E < 0)
      {
      De_Str = De_Str + mp;
    ln = ln + 1;
    count = count + 1;
    ln = 0;
    a1 = 0;
    a2 = 0;
    c1 = 2;
    c2 = 0;
    ind = 0;
      }
      else
      {
      a1 = ac - 0X3E;
      if (ln >= Source_Len)
      {
    break;
      }
      if (c2 + 6 < 8)
      {
      a2 = fix(a1 * ((Math.Pow(2, c1))));
      a2 = fix(a2 & @int(code[c1]));
      c2 = c2 + (8 - c1);
      count = count + 1;
      }
      else
      {
      ind = fix(a1 & 0X3F);
      ind = fix(ind / ((Math.Pow(2, (6-c1)))));
    lo = ind | a2;
    if (lo > 128 && tlo == 0)
    {
    tlo = lo * 256;
    }
    else
    {
      De_Str = De_Str + ((char)(tlo + lo)).ToString();
    tlo = 0;
    }
      ln = ln + 1;
      c2 = 0;
    if (c1 >= 6)
    {
    c1 = 2;
    count = count + 1;
    }
    else
    {
    c1 = c1 + 2;
    a2 = fix(a1 * ((Math.Pow(2, c1))));
    a2 = fix(a2 & @int(code[c1]));
    c2 = c2 + (8 - c1);
    count = count + 1;
    }
      }
      }
    }
    BymDecode = De_Str;
    return null;
    }
      

  2.   

    public object MYDecode(Pass)
    {
    [] code = new[];
    dynamic tlo = null;
    code(2) = 0xfc;
    code(4) = 0xf0;
    code(6) = 0xc0;
    Source_Len = Strings.Len(Pass);
    Count = 0;
    ln = 0;
    a1 = 0;
    a2 = 0;
    c1 = 2;
    c2 = 0;
    ind = 0;
    tlo = 0;
    while (Count < Source_Len) {
    mp = Strings.Mid(Pass, Count + 1, 1);
    ac = Strings.Asc(mp);
    if (ac - 0x3e < 0) {
    De_Str = De_Str + mp;
    ln = ln + 1;
    count = count + 1;
    ln = 0;
    a1 = 0;
    a2 = 0;
    c1 = 2;
    c2 = 0;
    ind = 0;
    } else {
    a1 = ac - 0x3e;
    if (ln >= Source_Len) {
    break; // TODO: might not be correct. Was : Exit Do
    }
    if (c2 + 6 < 8) {
    a2 = Conversion.Fix(a1 * (Math.Pow(2, c1)));
    a2 = Conversion.Fix(a2 & Conversion.Int(code(c1)));
    c2 = c2 + (8 - c1);
    count = count + 1;
    } else {
    ind = Conversion.Fix(a1 & 0x3f);
    ind = Conversion.Fix(ind / (Math.Pow(2, (6 - c1))));
    lo = ind | a2;
    if (lo > 128 & tlo == 0) {
    tlo = lo * 256;
    } else {
    De_Str = De_Str + Strings.Chr(tlo + lo);
    tlo = 0;
    }
    ln = ln + 1;
    c2 = 0;
    if (c1 >= 6) {
    c1 = 2;
    count = count + 1;
    } else {
    c1 = c1 + 2;
    a2 = Conversion.Fix(a1 * (Math.Pow(2, c1)));
    a2 = Conversion.Fix(a2 & Conversion.Int(code(c1)));
    c2 = c2 + (8 - c1);
    count = count + 1;
    }
    }
    }
    }
    BymDecode = De_Str;
    }
      

  3.   


    那是vb.net-> C#
    public object MYDecode(Pass)
    {
        [] code = new[];
        dynamic tlo = null;
        code(2) = 0xfc;
        code(4) = 0xf0;
        code(6) = 0xc0;
        Source_Len = Strings.Len(Pass);
        Count = 0;
        ln = 0;
        a1 = 0;
        a2 = 0;
        c1 = 2;
        c2 = 0;
        ind = 0;
        tlo = 0;
        while (Count < Source_Len) {
            mp = Strings.Mid(Pass, Count + 1, 1);
            ac = Strings.Asc(mp);
            if (ac - 0x3e < 0) {
                De_Str = De_Str + mp;
                ln = ln + 1;
                count = count + 1;
                ln = 0;
                a1 = 0;
                a2 = 0;
                c1 = 2;
                c2 = 0;
                ind = 0;
            } else {
                a1 = ac - 0x3e;
                if (ln >= Source_Len) {
                    break; // TODO: might not be correct. Was : Exit Do
                }
                if (c2 + 6 < 8) {
                    a2 = Conversion.Fix(a1 * (Math.Pow(2, c1)));
                    a2 = Conversion.Fix(a2 & Conversion.Int(code(c1)));
                    c2 = c2 + (8 - c1);
                    count = count + 1;
                } else {
                    ind = Conversion.Fix(a1 & 0x3f);
                    ind = Conversion.Fix(ind / (Math.Pow(2, (6 - c1))));
                    lo = ind | a2;
                    if (lo > 128 & tlo == 0) {
                        tlo = lo * 256;
                    } else {
                        De_Str = De_Str + Strings.Chr(tlo + lo);
                        tlo = 0;
                    }
                    ln = ln + 1;
                    c2 = 0;
                    if (c1 >= 6) {
                        c1 = 2;
                        count = count + 1;
                    } else {
                        c1 = c1 + 2;
                        a2 = Conversion.Fix(a1 * (Math.Pow(2, c1)));
                        a2 = Conversion.Fix(a2 & Conversion.Int(code(c1)));
                        c2 = c2 + (8 - c1);
                        count = count + 1;
                    }
                }
            }
        }
        BymDecode = De_Str;
    }