我为我的项目用PHP编写了这个算法:
<?php
$s = "abc"; //input -- string
$n = strlen($s);
$b = 0;
for ($i = 0; $i < $n; $i++)
{
$b += ord($s[$i]) * pow(31, ($n - ($i + 1)));
}
echo $b; //output -- int
?>
但现在我必须将其反转以从整数中取出字符串。我试过但它失败了,是否有任何方法来反转它?
编辑:通过“任何方式”,我的意思是它不必反转原始文本,而只是反转给提供该值的文本。
答案 0 :(得分:2)
更简单的例子:让我们为每个字母分配一个值:a = 1,b = 2,c = 3,d = 4等......
我们走了:你有“5” - 你不知道它是“广告”还是“bba”或“bc”等。
答案 1 :(得分:0)
如果字符串可以保证只有小写字母,它可以;你必须弄清楚它的数学(我建议你在纸上算出算法,把字母留作变量;求解方程式,你就会看到如何反转它)。
如果字符串是任意的,则不;因为你将每个字符转换为数字的基数31表示,移动它并添加结果 - 但是,这个添加有很多进位,所以你不能只从数字中找出原始字符(那个是结果的最终数字。
编辑:给出您的编辑,然后是的,这是可能的。但它可能有点复杂 - 我会让你自己计算出数学。尝试用数字31来玩杂耍。