تابع تبدیل مبنای اعداد بزرگ در 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);

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

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

تابع ()mysql_data_seek در php...

در PHP بارها پیش می آید بعد از کوئری SELECT از تابع ()mysql_fetch_assoc یا تابع ()mysql_fetch_array استفاده کنید......

چک کردن صحت رشته ی کاراکتر-عددی...

تابع ()ctype_alnum رشته ورودی را بررسی میکند که آیا فقط از کاراکتر و عدد است یا نه(Alpha Numeric). در صورت درستی مقدار True و در غیر اینصورت مقدار False را بر می گرداند......

تابع کپی فایل از هر آدرس دلخواه...

تابع زیر آدرس مورد نظر را در دایرکتوری مقصد کپی می کند. توجه شود که تابع copy فقط مختص کپی فایلهای اینترنتی نیست. function WgetFile( $URL, $dir ) { $nomefile = $dir . "/" . basename( $URL ); ...

پارسر قدرتمند شناسایی کلمات یک رشته...

تابع زیر یک پارسر قدرتمند جهت شناسایی کلمات یک رشته و جداسازی آنهاست. این تابع یکی از توابع کاری موتور جستجوی گروه ما(وی2) است. تمامی بهینه سازیها در این تابع رعایت شده که هر چند ساده است!......

نظر

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