parseInt()-将字符串转换为整数并返回PHP

时间:2019-06-01 15:43:31

标签: javascript php

我正在尝试对一些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”字符串。 他们正是在服务器端执行此操作。

6 个答案:

答案 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 的详细信息。