jscript代码到C#

jscript代码到C#,c#,jscript,wsh,C#,Jscript,Wsh,任何好的jscript代码都可以转换成C# 我想把这段代码转换成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};

任何好的jscript代码都可以转换成C# 我想把这段代码转换成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>

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};
函数生成器密码(输入){
var inputMac=input.replace(/:/g,“”).toUpperCase();
var macPassword=“”;
if((inputMac.search(/^[A-F0-9]{12}$/)==1)| |(inputMac==000000000000”)){
return macPassword=“无效”}
否则{
var b;
var a;
var c=“”;

对于(b=0;b我不知道有任何从JScript到C#的转换器,只有相反的方法。我甚至对这些都没有很好的看法。在我看来,“transpiling”有太多的语言和框架细节,无法很好地工作

我不知道你在哪里找到了你发布的代码,因为根据评论,你并不真正了解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;
    }
}
公共字符串生成器密码(字符串输入)
{
var add=新字节[]{12,2,17,5,16,31,28,10,16,20,22,1};
var subst=新字典{{58122}、{59121}、{60120}、{61119}、{62118}、{63117}、{64116}、{91115}、{92114}、{93113}、{94112}、{45111}、{96110};
var inputMac=input.Replace(“:”,“”)。ToUpperInvariant();
如果(!Regex.IsMatch(inputMac,“^[A-F0-9]{12}$”)| |(inputMac==“000000000000”))
{
返回“无效”;
}
其他的
{
var c=“”;
对于(var b=0;b<12;b++)
{
变量a=(字节)((字节)inputMac[b]+add[b]);
如果(第(a)小节)
{
a=subst[a];
}
c+=(char)a;
}
返回“2008”+c;
}
}
C#代码可以进一步改进,但我希望它尽可能接近原始代码,这样您就可以了解特定构造中的差异,并在将来自己动手,而不只是按原样使用转换后的代码


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

上面使用的所有函数都在c#中,你自己试过编码吗!?在c#上这个函数的等价物是什么?我试着对这两个部分进行编码。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}我看到的第一个是普通的int数组,你不知道在jscript中是什么吗?我对jscript有点了解谢谢。它很有效。我知道如何转换其余的,我混淆的是前两行,我不知道在C#中到底是什么。