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

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

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

ایجاد رشته تصادفی...

این تابع رشته تصادفی به طول آرگومان ورودی(len$) تولید می‌کند. function rnd_string($len = 24) { $str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; $strlen = strlen($s...

جدا سازی کلمات یک رشته با توجه به کاراکترهای جدا کننده(گسترش تابع explode)...

تابع explode جهت جدا سازی یک رشته با توجه به کاراکتر ورودی کاربرد دارد. جهت جداسازی یک رشته با چند کاراکتر راه های محتلفی وجود دارد که ما در این بخش این تابع را برای مقصود خود بسط داده ایم. به کدهای ز...

تابع کنترل اطلاعات ورودی برای جلوگیری از تزریق به پایگاه داده...

ورودی‌ها همیشه باید کنترل شوند تا از خطراتی نظیر SQL Injection در امان بود. یک روش ساده و قوی برای این کار وجود دارد که خود وب سایت PHP آنرا توصیه نموده است. هر چند که شما می ...

محاسبه مقدار حافظه مصرف شده در RAM سیستم(سرور)...

با استفاده از تابع ()memory_usage براحتی میتوانید به مقدار حافظه مصرفی از RAM آگاهی یابید. این تابع از تابع اصلی()memory_get_usage استفاده می کند. function memory_usage() { return (int)(m...

نظر

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