我正在尝试对一些Javascript代码进行反向工程,然后用PHP重新编码。 有一个用parseInt(String,36)“转换”为Integer的字符串。 我需要在不知道秘密字符串的情况下将整数转换回PHP中的秘密字符串的可能性。
secretCode = "0vo8fz4kvy03";
decode = parseInt(secretCode, 36).toString();
console.log(decode); //= 115802171408044510
我如何在PHP中做到这一点?
115802171408044510
回到0vo8fz4kvy03
此中介包含一些信息:
decode="115802171408044510";
storeID = decode.substr(0, 4); // 1158
posID = decode.substr(12, 2); // 04
orderID = decode.substr(14, 2); // 45
day = decode.substr(6, 2); // 17
month = decode.substr(4, 2); // 02
hour = decode.substr(8, 2); // 14
minutes = decode.substr(10, 2); // 08
我想在上面编辑此值,并将其转换回“ secretCode”字符串。 他们正是在服务器端执行此操作。
答案 0 :(得分:3)
不能。该数字溢出了最大安全整数大小,因此无法逆转此过程(因为该数字会四舍五入到下一个安全整数)。因此,代码已损坏。
答案 1 :(得分:2)
您可以使用Info.plist
并将较大的值转换为十进制或转换为字符串。
BigInt
答案 2 :(得分:1)
You can try.
decode.toString(36)
答案 3 :(得分:1)
要将您的javascript编码数字字符串从10转换为36:
$decode = "115802171408044510";
echo base_convert ( $decode , 10 , 36 );
答案 4 :(得分:0)
Number.prototype.toString()
方法接收一个可选参数,该参数可让您设置结果的基础。
所以您要做的就是(+decode).toString(36)
。
secretCode = "0vo8fz4kvy03";
decode = parseInt(secretCode, 36).toString();
console.log(decode); //= 115802171408044510
console.log((+decode).toString(36));
请注意,我正在将您的decode
转换为数字。之所以需要这样做,是因为您将parseInt
的结果直接转换为字符串,因此您实际上并没有保留数字。
答案 5 :(得分:0)
PHP 中的 intval
函数与 Javascript 中的 parseInt
最接近,包括对基数参数的支持:
$int = intval('9', 36);
在Javascript中,对于无法解析为整数的输入,parseInt
返回NaN
;但在 PHP 中,intval
返回 0
。
查找有关 intval function in php docs 的详细信息。