تابع تبدیل مبنای اعداد بزرگ در php

۹ ماه پیش(به روز شده در ۸ ماه پیش) پی اچ پی(PHP)(توابع) ۰

باینری - دسیمال

باینری - دسیمال

مشخصات تصویر: ۹۷.۶۸ کیلو بایت , ۴۷۸x۴۹۷ پیکسل , jpg , Binary
جزییات تصویر:
منبع تصویر: https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2013/04/bin3.jpg

تابع معرفی شده با استناد به مطلبی از سایت 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);

البته در منبع توابع دیگری نیز معرفی شده است که بررسی آنها قطعا سودمند است.

صفحات پیشنهادی

تابع نمایش امن ایمیل به کاربر...

تابع مورد نظر ، ایمیل کاربر را به حالت مطمئن(امن) نمایش می دهد تا کل آدرس افشا نشود. function printEMail($email) { $explode = explode('@', $email); return substr($explode[0], 0, 7).'...@'.$explo...

تعریف تابع در تابع...

برای فراخوانی تابعی که در درون تابع دیگر ایجاد شده است باید ابتدا تابع پدر فراخوانی شود و سپس تابع فرزند قابل دسترس خواهد بود. مثال: function foo() { function bar() { echo "Hello World!"; ...

تابع محاسبه طول رشته با یونیکد utf-8...

دو تابع جهت بررسی طول یک رشته utf8. function strlen_utf8( $str ) { return mb_strlen( $str, 'UTF-8' ); }   //or... function strlen_utf8( $str ) { $c = 0; $len = strlen( $str ); ...

تبدیل مایل به کیلومتر در php...

تابع تبدیل مایل به کیلومتر......

نظر

نظری ثبت نشده است.