各位大虾,帮忙看看这段代码是干什么的,这么用有什么好处,这是从一个高手给的,不过很少有机会问他,请大家帮忙看看,分数不多,就剩下30了,别嫌少。
public static String setYml(String Yml, int ebits, int n, int v)
    {
        if(ebits <= 0)
            return Yml;
        int index = n / ebits;
        int j = n % ebits;
        int l = 0;
        if(Yml != null)
            l = Yml.length();
        else
            Yml = new String();
        if(index >= l)
        {
            for(int i = 0; i < (index - l) + 1; i++)
                Yml = Yml + '0';        }
        byte b = (byte)Yml.charAt(index);
        int m = b < 48 || b > 57 ? (b - 65) + 10 : b - 48;
        if(v > 0)
            m |= 128 >> (8 - ebits) + j;
        else
            m &= ~(128 >> (8 - ebits) + j);
        char c = (char)(m < 0 || m > 9 ? (m - 10) + 65 : m + 48);
        char buf[] = new char[Yml.length()];
        buf = Yml.toCharArray();
        buf[index] = c;
        Yml = new String(buf);
        return Yml;
    }下面的语句是调用这个方法的//cdid是存储菜单的id的那个字段
for(int i = 0; i < cdid.length; i++){
setYml(qx,Integer.parseInt(cdid[i]),1);
}

解决方案 »

  1.   

    上面的代码是设置访问我菜单的权限,比如这个setYml(qx,Integer.parseInt(cdid[0]),1);里面的cdid[0]参数是第一个菜单的的id。
    贴多代码怕大家烦,这些就够了。
      

  2.   

    传的参数少一个啊。
    我也很想知道,尤其这一个判断:
     if(v > 0)
                m |= 128 >> (8 - ebits) + j;
            else
                m &= ~(128 >> (8 - ebits) + j);
      

  3.   

    那个public static String setYml(String Yml, int ebits, int n, int v)
    里面的Int ebits参数被传的是固定的常数,是4。
      

  4.   

    这种自己debug一遍就知道他在干嘛的吧!先做个记号
      

  5.   

    菜单ID是几位的?什么样的规则?数字?字符+数字?
    先给两个ID看看PS:程序乱七八糟没法看啊,不说注释了,基本命名习惯都没有
    Yml估计是什么什么汉语拼音缩写吧?
      

  6.   

    菜单id是四位以内的是数字,从1开始到999for(int i = 0; i < cdid.length; i++){//上面那段代码应该改成这样,上面的代码少写了个qx=
        qx=setYml(qx,Integer.parseInt(cdid[i]),1);
    }
    yml是权限,呵呵,yml确实是乱写的。