Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Javascript代码转换为C#代码_C#_Javascript - Fatal编程技术网

如何将Javascript代码转换为C#代码

如何将Javascript代码转换为C#代码,c#,javascript,C#,Javascript,我有一个Javascript方法。我在C#上写过,但没用 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) % __

我有一个Javascript方法。我在C#上写过,但没用

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;
    }
结果:1132332429

C#测试

结果:172781421

如何在C#中获取JS值?

此代码有效:

private string cc(string a)
{
    var __AM = 65521;
    int e;
    long d;
    long c = 1, b = 0;
    for (e = 0; e < a.Length; e++)
    {
        d = (int)a[e];
        c = (c + d) % __AM;
        b = (b + c) % __AM;
    }
    return (b << 16 | c).ToString();
}
私有字符串cc(字符串a)
{
var_uam=65521;
INTE;
长d;
长c=1,b=0;
对于(e=0;e返回(b尝试
byte[]p=Encoding.ASCII.GetBytes(a);
在循环外部使用
d=p[e]
b.ToString()+c.ToString()
肯定不等同于
b这是Adler-32校验和算法。也许在C#中有一个内置的实现?我不知道。这是错误的。因为当它被转换为字节时。只有数组的第一个值可用。没有理由将其转换为字节。字符串基本上是字符[]。只需将字符转换为int,您就可以得到字符代码。不过,JavaScript总是以UNICODE格式处理字符串,我对C#不太了解,但可能字符串的处理方式不同。此代码肯定适用于任何“a-z 0-9”字符串,但特殊字符如何?这是值得进一步测试的。
cc("4JipHEz53sU1406413803");
CC("4JipHEz53sU1406413803");
private string cc(string a)
{
    var __AM = 65521;
    int e;
    long d;
    long c = 1, b = 0;
    for (e = 0; e < a.Length; e++)
    {
        d = (int)a[e];
        c = (c + d) % __AM;
        b = (b + c) % __AM;
    }
    return (b << 16 | c).ToString();
}