将 Javascript 函数翻译成 Python
Translating Javascript Function to Python
我完全不了解 javascript,但我正在尝试解决解码函数并将其转换为 python。在站点代码中,它生成一个长度为 100 个字符的字符串,该字符串被插入到一个名为 decode 的函数中,如此处所示,returns 一个长度为 96 个字符的字符串。我已经开始尝试将其转化为可用的 python 函数。
decode.call(undefined, "TaYWuqsVvO1zjYWnzcZaSyOucBGnvoz7Jiq2RLZBvTk35uaNHlYrwFb8V2fqQqBjVOGPyuu4WD1dMXeX1Si1GqVIWJYXey75PQMS");
function decode(message) {
/** @type {number} */
var offset = 71 + 28 * 75 + 14 + 38;
if (this.angular.isDate(offset)) {
console.log("Offset derived as: {", offset, "}");
}
return _.replace(message, /./g, function(char, increment) {
return String.fromCharCode((char.charCodeAt(0) * increment + offset) % 77 + 48);
});
}
;
Javascript 不是我的母语,因此对不同函数调用的任何帮助和解释都会有很大帮助。我已经知道,在这种情况下,我们的偏移量是一个整数值 2223。然后我们获取消息并替换其内容。但是我对增量函数和 /./g
部分感到有点困惑。
在您的代码中不清楚 this.angular
是什么,但您似乎对字符串替换最感兴趣。在 python 中,您可以执行以下操作:
def decode(s):
offset = 71 + 28 * 75 + 14 + 38;
return "".join(chr((ord(a) * increment + offset) % 77 + 48) for increment, a in enumerate(s) )
p = decode("TaYWuqsVvO1zjYWnzcZaSyOucBGnvoz7Jiq2RLZBvTk35uaNHlYrwFb8V2fqQqBjVOGPyuu4WD1dMXeX1Si1GqVIWJYXey75PQMS")
这使得 p
等于:
's:>Dy@pe:8BGNueGAhvnQsRohGqRldO1`sk^@NFG=^BK<CoUj^cMB4^sPtfS|N1^K[hUhgBoAJzEss><l>eeI_wKGOusZ11D_vs]'
这与我在 javascript.
中得到的值相同
chr()
和ord()
与String.fromCharCode()
和char.charCodeAt()
大致相同。您可以使用 enumerate
获得 increment
和值。之后剩下的就是数学了。
我完全不了解 javascript,但我正在尝试解决解码函数并将其转换为 python。在站点代码中,它生成一个长度为 100 个字符的字符串,该字符串被插入到一个名为 decode 的函数中,如此处所示,returns 一个长度为 96 个字符的字符串。我已经开始尝试将其转化为可用的 python 函数。
decode.call(undefined, "TaYWuqsVvO1zjYWnzcZaSyOucBGnvoz7Jiq2RLZBvTk35uaNHlYrwFb8V2fqQqBjVOGPyuu4WD1dMXeX1Si1GqVIWJYXey75PQMS");
function decode(message) {
/** @type {number} */
var offset = 71 + 28 * 75 + 14 + 38;
if (this.angular.isDate(offset)) {
console.log("Offset derived as: {", offset, "}");
}
return _.replace(message, /./g, function(char, increment) {
return String.fromCharCode((char.charCodeAt(0) * increment + offset) % 77 + 48);
});
}
;
Javascript 不是我的母语,因此对不同函数调用的任何帮助和解释都会有很大帮助。我已经知道,在这种情况下,我们的偏移量是一个整数值 2223。然后我们获取消息并替换其内容。但是我对增量函数和 /./g
部分感到有点困惑。
在您的代码中不清楚 this.angular
是什么,但您似乎对字符串替换最感兴趣。在 python 中,您可以执行以下操作:
def decode(s):
offset = 71 + 28 * 75 + 14 + 38;
return "".join(chr((ord(a) * increment + offset) % 77 + 48) for increment, a in enumerate(s) )
p = decode("TaYWuqsVvO1zjYWnzcZaSyOucBGnvoz7Jiq2RLZBvTk35uaNHlYrwFb8V2fqQqBjVOGPyuu4WD1dMXeX1Si1GqVIWJYXey75PQMS")
这使得 p
等于:
's:>Dy@pe:8BGNueGAhvnQsRohGqRldO1`sk^@NFG=^BK<CoUj^cMB4^sPtfS|N1^K[hUhgBoAJzEss><l>eeI_wKGOusZ11D_vs]'
这与我在 javascript.
中得到的值相同chr()
和ord()
与String.fromCharCode()
和char.charCodeAt()
大致相同。您可以使用 enumerate
获得 increment
和值。之后剩下的就是数学了。