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>
答案 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#代码可以进一步改进,但我希望尽可能接近原始代码,以便您可以了解特定构造中的差异并在将来自己完成,而不是仅使用转换后的代码原样。
只是好奇:你打算用这个函数做什么?