تابع تبدیل مبنای اعداد بزرگ در php
۱ سال پیش(به روز شده در ۱ سال پیش) پی اچ پی(PHP)(توابع) ۰
تابع معرفی شده با استناد به مطلبی از سایت Stackoverflow می باشد. تابع پیشفرض ()base_convert
در php دقیقا همین کار را انجام میدهد اما برای اعداد بزرگ ناتوان هست که در مثال انتهای کد مشخص شده است. در این تابع مقدار و مبنای مورد نظر را وارد کرده و سپس به هر مبنایی که مد نظر شماست تبدیل میکند. تابع برای پردازشهای سنگین مناسب نیست چون بر مبنای رشته عمل میکند و در اجرا زمانبر هست ولی برای کارهای معمول بسیار مفید میباشد.
function my_base_convert($numstring, $frombase = 16, $tobase = 10) { $chars = "0123456789abcdefghijklmnopqrstuvwxyz"; $tostring = substr($chars, 0, $tobase); $length = strlen($numstring); $result = ''; for ($i = 0; $i < $length; $i++) { $number[$i] = strpos($chars, $numstring{$i}); } do { $divide = 0; $newlen = 0; for ($i = 0; $i < $length; $i++) { $divide = $divide * $frombase + $number[$i]; if ($divide >= $tobase) { $number[$newlen++] = (int)($divide / $tobase); $divide = $divide % $tobase; } elseif ($newlen > 0) { $number[$newlen++] = 0; } } $length = $newlen; $result = $tostring{$divide} . $result; } while ($newlen != 0); return $result; } // Out = 0000000000000000000000000000000000000000000000000000000000000000 echo base_convert('93126606828970615947672892964530113131806047264927526149623497787359285987082123864065558768789161850941454200', 10, 16); // Out = 27a726c2bd76dfa63d812dfe4175e3788de7def0af5bc77b8c8d71938778a8dd975d744c5b05546a049cc167b778 echo my_base_convert('93126606828970615947672892964530113131806047264927526149623497787359285987082123864065558768789161850941454200', 10, 16);
البته در منبع توابع دیگری نیز معرفی شده است که بررسی آنها قطعا سودمند است.
نظر
نظری ثبت نشده است.