function MM(s,z)
{
var b=Array();
var m=(1<<z)-1;
for(var i=0;i<s.length*z;i+=z)
b[i>>5]|=(s.charCodeAt(i/z)&m)<<(i%32);
return b;
}
我转的代码,报错:public ArrayList MM(string s, int z)
        {
            ArrayList b = new ArrayList();   
            int m = (1 << z) - 1;
            for (int i = 0; i < s.Length * z; i += z)
            {
                b[i >> 5] = (int)b[i >> 5] | (((int)s[i / z]) & m) << (i % 32);  //报错,索引超出范围。必须为非负值并小于集合大小。
            }            //...
        }请各位高手帮忙看看,怎么写好。