[英]Is this algorithm reversible?
我有這個用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
?>
但現在我必須將其反轉以從整數中取出字符串。 我試過但它失敗了,有沒有辦法扭轉它?
編輯:通過“任何方式”我的意思是它不必反轉原始文本,而只是反轉給提供該值的文本。
不,這不對...
更簡單的例子:讓我們為每個字母分配一個值:a = 1,b = 2,c = 3,d = 4等...
我們走了:你有“5” - 你不知道它是“廣告”還是“bba”或“bc”等。
如果字符串可以保證只有小寫字母,它可以; 你必須弄清楚它的數學(我建議你在紙上算出算法,把字母留作變量;解決方程,你會看到如何反轉它)。
如果字符串是任意的,則不; 因為你將每個字符轉換為數字的基數31表示,移動它並添加結果 - 但是,這個添加有很多進位,所以你不能只從數字中找出原始字符(那個是結果的最終數字。
編輯:給你的編輯,然后是的,這是可能的。 但它可能有點復雜 - 我會讓你自己計算出數學。 嘗試用數字31來玩雜耍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.