将javascript序列解码为python

2024-10-01 07:24:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的初学者,尝试解码这个javascript序列。我不仅是Python的初学者,对javascript的理解更差:)我知道我可以把它放到一个在线解码器中,比如:http://coderstoolbox.net/string/,但我想自己处理它-更多的是为了练习。。。我用漂亮的汤来获取数据,所以我有它的功能可以解码。在

如果有人能给我指出python中的等效函数,我将不胜感激。在

function encode(str){
 var t=''; var s=unescape(str);
 var x=Math.round(Math.sqrt(49));
 for(var i=0;i<s.length;i++) t+=
  String.fromCharCode(s.charCodeAt(i)^(i%2?x:0));
 print(t);
}

到目前为止,我的理解是:

  1. 我想我可以在BS中使用'HTML实体来显示。。?在
  2. 第二个似乎只是一个常数?49的平方根四舍五入。。。在
  3. 设置循环
  4. 这是我没有得到的。1我不知道fromCharCode函数的作用。2不知道结尾是什么。看起来是从我那里得到了一个字符代码。我知道我被2模化了,但是什么是'?x: 0'位?-如何在Python中复制它?在

谢谢你的阅读!在

编辑:有没有一个python库可以运行这段代码?我以前用bash和rhino做过这件事,但是Python中的替代品对于初学者来说似乎有点可怕,比如spidermonkey等等。。。在


Tags: 函数代码httpstringnetvar序列math
2条回答

我不懂Python,但我可以解释一下这里发生了什么,以便您可以用Python重写。在

1)函数encode是声明的而不是赋值的,因此在JavaScript中,它将被提升到其父函数的顶部(如果有)。在

2)函数编码内部有4个变量将被提升到函数编码的顶部:

  • t、 它被分配给一个空字符串,这意味着长度为0,但类型为string
  • s、 它被赋予通过uncode函数传递的参数“str”的值。取消编码只会反转URI保留字符编码。在
  • x、 它是数值为7的数字类型
  • i、 它被赋值为0并用作循环迭代器

3)循环索引从0开始,不迟于索引大小与变量s上的字符长度相同

4)循环是以草率的方式编写的,没有大括号,因此它在第一个换行处终止,这意味着变量t正在执行一个字符串concat,以反映变量s

5)以string对象开头的下一行看起来应该在循环中,但实际上不是,因为这段代码太草率了。不管怎样,这都无关紧要,因为变量s并没有真正用于任何进一步的操作。在

6)print函数使用变量t作为参数。变量t应该看起来与变量s相同,这可能不是本代码的原始作者想要的。在

7)我不知道什么是指纹。也许原作者的意思是警觉或者控制台.log而不是印刷品。在

1)与unescape等价的python在python2.x系列中是urllib.unquote(),在python3.x系列中是{a2}

2)你猜最简单的方法就是做x = 7

3)在字符串宪章上循环的最简单方法是执行for c in string:,但是要有一个您应该做的索引for i,c in enumerate(string):

4)该字符串.charChodeAt(c) 与chr(c)相同

最后,我将复制循环部分,如下所示:

result = []
for i,c in enumerate(string):
    result.append(chr(ord(c)^(x if i%2 else 0)))
print("".join(result))

事实上,由于字符串不会发生变化,因此使用临时数组来生成appends比处理字符串更有效

相关问题 更多 >