jscript代码到C#

时间:2014-01-16 05:31:47

标签: c# jscript wsh

C#的任何好的jscript代码转换器 我想将这段代码转换为C# 此代码用于从设备MAC地址生成管理员密码

    <script language="jscript">
    var add=[12,2,17,5,16,31,28,10,16,20,22,1];
    var subst={58:122,59:121,60:120,61:119,62:118,63:117,64:116,91:115,92:114,93:113,94:112,45:111,96:110};

    function generatePassword(input){
    var inputMac=input.replace(/:/g,"").toUpperCase();
    var macPassword="";
if((inputMac.search(/^[A-F0-9]{12}$/)==-1) || (inputMac =="000000000000")){
    return macPassword="invalid"}
else{
    var b;
    var a;
    var c="";
    for(b=0;b<12;b++){
        a=inputMac.charCodeAt(b)+add[b];
        if(subst[a]){
            a=subst[a]
        }
        c+=String.fromCharCode(a)
    }
    return macPassword="2008"+c+"";
    }
};
</script>

1 个答案:

答案 0 :(得分:0)

我不知道从JScript到C#的任何转换器,只是相反。我甚至对这些都没有很好的看法。国际海事组织,有太多的语言和框架细节可以“转化”工作得非常好。

我不知道您在哪里找到了您发布的代码,因为根据评论,您并不真正了解JScript。我希望你在C#上做得更好,这样你至少可以理解转换后的函数:

public string GeneratePassword(string input)
{
    var add= new byte[] {12,2,17,5,16,31,28,10,16,20,22,1};
    var subst = new Dictionary<byte, byte> {{58,122},{59,121},{60,120},{61,119},{62,118},{63,117},{64,116},{91,115},{92,114},{93,113},{94,112},{45,111},{96,110}};

    var inputMac = input.Replace(":", "").ToUpperInvariant();
    if (!Regex.IsMatch(inputMac, "^[A-F0-9]{12}$") || (inputMac == "000000000000"))
    {
        return "invalid";
    }
    else
    {
        var c="";
        for(var b = 0; b < 12; b++)
        {
            var a = (byte)((byte)inputMac[b] + add[b]);
            if(subst.ContainsKey(a))
            {
                a=subst[a];
            }
            c += (char)a;
        }
        return "2008" + c;
    }
}

C#代码可以进一步改进,但我希望尽可能接近原始代码,以便您可以了解特定构造中的差异并在将来自己完成,而不是仅使用转换后的代码原样。

只是好奇:你打算用这个函数做什么?