我目前正在对javascript代码进行逆向工程,我在其中遇到了以下代码
timestamp % 1e7这段javascript代码输出的数字如下所示
4822529用python编写的相同代码返回一个完全不同的数字。
>>> time.time() % 1e7
9645047.76914692我没有正确使用这些运算符吗?
发布于 2021-01-03 11:45:51
在Python语言中,time.time返回自纪元以来的秒数,类似于:
1609645359.6018794小数点前的7个数字是9645359。小数点前总共有10位数字。
但在JS中,时间戳通常以自纪元起的毫秒数给出:
console.log(Date.now());
1609645512558或者差不多吧。这是1000倍,所以值有很大的不同;小数点前有13位数字。
如果你把不同语言的数字排成3位数,你就会看到这种模式:
4822529
9645047如果同时运行它们,那么4822和5047将更加紧密地结合在一起。
如果您希望Python与JS输出相匹配,请改为使用1e4对Python进行取模。
如果您希望JS与Python输出相匹配,请使用1e10在JS中取模。
发布于 2021-01-03 11:46:02
JavaScript的Date.now()以毫秒为单位返回时间,而Python的time.time()以秒为单位返回时间。如果你将Python的时间乘以1000,你会得到类似的结果。
> Date.now() % 1e7
5615760>>> time.time() * 1000 % 1e7
5637124.4873046875您还可以通过转换为int来去除小数部分
>>> int(time.time() * 1000 % 1e7)
5637124https://stackoverflow.com/questions/65546414
复制相似问题