帮忙把这段js转成C#

topso 2009-11-16 10:14:18

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); //报错,索引超出范围。必须为非负值并小于集合大小。
}

//...
}



请各位高手帮忙看看,怎么写好。
...全文
85 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu4139365 2009-11-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ken_flash 的回复:]
帮顶吧。。。这个左移右移的 问汇编的人[/Quote]
zenowolf 2009-11-17
  • 打赏
  • 举报
回复
b[i >> 5] |= ((int)s[1 / z] & m) << (i % 32);
我姓区不姓区 2009-11-16
  • 打赏
  • 举报
回复

int[] MM(string s, int z)
{
int[] b = new int[(s.Length * z >> 5) + 1];
int m = (1 << z) - 1;
for (int i = 0; i < s.Length * z; i += z)
b[i >> 5] |= ((int)s[1 / z] & m) << (i % 32);
return b;
}

wxleon 2009-11-16
  • 打赏
  • 举报
回复
顶!
ken_flash 2009-11-16
  • 打赏
  • 举报
回复
帮顶吧。。。这个左移右移的 问汇编的人

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧