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

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

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

شناسایی اعداد از متن یونیکد...

روشهای رایج همگی جهت شناسایی اعداد یک رشته روش زیر را پیشنهاد میکنند......

توابع کار با رشته های با یونیکد UTF-8...

هدف پروژه مورد نظر , ایجاد توابعی است که با رشته های UTF-8 کار می کند. بعنوان مثال بخشی از کلاس را ببینید(تابع بررسی صحت رشته UTF-8)......

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

مدتی قبل برای گروه ما در یکی از پروژه ها به تابعی نیاز شد که هر چند جز کدهای ساده ایست اما کارهای بزرگی انجام میدهد. تابع زیر تمامی زیرمجموعه های یک شناسه بصورت تو در تو رو را شناسایی میکند. برای درک ...

توابع next , prev , end , current , reset در php...

این توابع مرتبط با آرایه ها هستند و وظیفه آنها اشاره به مقادیر آنهاست. در آرایه هایی که اندیسها یا کلیدهای آنها غیر عددی است , دسترسی به مقدار کمی متفاوت تر خواهد بود. هر چند که این توابع برای اندیسها...

نظر

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