我有一个 JavaScript 方法。我用 C# 写了一份代码,但它不起作用。
JavaScript 代码:
我的C#代码
JS测试
结果:1132332429
C# 测试
结果:172781421
如何在C#中获取JS值?
JavaScript 代码:
var __AM = 65521;
function cc(a) {
var c = 1, b = 0, d, e;
for (e = 0; e < a.length; e++) {
d = a.charCodeAt(e);
c = (c + d) % __AM;
b = (b + c) % __AM;
}
return b << 16 | c;
}
我的C#代码
private string CC(string a)
{
var __AM = 65521;
int e;
long d;
long c = 1, b = 0;
for (e = 0; e < a.Length; e++)
{
var p = Encoding.Unicode.GetBytes(a[e].ToString());
d = Convert.ToInt32(p.First());
c = (c + d) % __AM;
b = (b + c) % __AM;
}
return b.ToString() + c.ToString();
}
JS测试
cc("4JipHEz53sU1406413803");
结果:1132332429
C# 测试
CC("4JipHEz53sU1406413803");
结果:172781421
如何在C#中获取JS值?
byte[] p = Encoding.ASCII.GetBytes(a);
,然后只需使用d = p[e]
。 - Havenardb.ToString() + c.ToString()
明显不等同于b << 16 | c
。 - vgru