0

我试图在 vb.net 中混淆一个字符串并在 javascript 中去混淆。

For i = 0 To Len(sData) / 4
    For j = 1 To 4
        ConvertData2 = ConvertData2 & Mid$(sData, (4 * i) + 5 - j, 1)
    Next j
Next i

上述代码在 vb.net 中运行良好。我需要javascript中的等效代码

我尝试了以下但没有工作。

for (i = 0; i<(sData.length)/4; i++)
{
    for (j = 1;j<4;j++)
        s=s+sData.substr((4 * i) + 5 - j,1)                  
}

任何人都可以建议我在哪里犯了错误..

4

2 回答 2

0

好吧,一方面,Javascript 字符串索引从 0 开始,而不是 1。for (j=1; j<4; j++)无论如何,您的循环只会从 1 计数到 3;您想从 0 到 3(j=0j<4)或从 1 到 4(j=1j<=4)。

VB的直接翻译如下所示:

convertData2 = ''
for (var i=0; i < sData.length / 4; ++i) {
   for (var j=1; j <= 4; ++j) {
       convertData2 += sData.substr(4 * i + 4 - j, 1)
   }
}
于 2012-07-24T07:52:08.893 回答
0

第一个明显的区别是,在 vb.net 中你使用整数除法,而在 javascript 中你不是......

利用

for(var i = 0, len = Math.floor(sData.length / 4); i<=len; i++)

第二个是Mid从 1 开始计数,subst从 0开始计数

所以用

s = s + sData.substr((4 * i) + 5 - j -1,1) 

或简化

s = s + sData.substr((4 * i) + 4 - j,1) 

最后是循环,使用时<不要使用最后一个数字......而from.. to使用最后一个数字也是如此(所以使用<=

所以一起

var s = ''; // define s (if not yet defined) other wise use s = '' to make sure it starts empty..
for(var i = 0, len = Math.floor(sData.length / 4); i <= len; i++) {
   for (var j = 1 ; j <= 4; j++) {
       s = s + sData.substr( (4 * i) + 4 - j,1);
   }
}
于 2012-07-24T07:53:49.227 回答