【发布时间】:2022-01-07 14:02:50
【问题描述】:
我有这个字符串“AUB9789LJLKA89”。我需要将其转换为 int,稍后我需要能够将其转换回字符串。
为了做到这一点,我在 PHP“base_convert”中找到,但是当我将“AUB9789LJLKA89”转换为 Base10 时,我得到了数字:1849450200354407248260,如果我将该数字转换回 Base36,我得到“AUB9789LJLKWCC”。与“AUB9789LJLKA89”大不相同。
base_convert("AUB9789LJLKA89", 36, 10); //I get 1849450200354407248260
base_convert(1849450200354407248260, 10, 36); //I get AUB9789LJLKWCC
我该如何解决这个问题?或者我可以使用哪种其他方式将字母数字转换为 int 方式并返回。
【问题讨论】:
-
可能是因为 PHP 文档中的警告:php.net/manual/en/function.base-convert.php (base_convert() 由于与内部“double”或“float”类型相关的属性,可能会丢失大数的精度使用)。
-
另外,我认为您可能正在处理比 PHP 可以处理的更大的数字。 1849450200354407248260 比 PHP_INT_MAX 的 9223372036854775807 长 3 位。你可能需要使用类似 GMP 的东西,php.net/manual/en/ref.gmp.php,第一个例子是转换碱基。
标签: php converters base