PHP တွင် Bindec () သည် Binary ကြိုးများကိုဒ decimal မကိန်းများသို့ပြောင်းလဲရန်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်း၏အခြေခံအသုံးပြုမှုသည်အတော်လေးရိုးရှင်းပါသည်။
echo bindec('1010'); // ထုတ်လုပ်ခြင်း 10
သို့သော် 0 င်လာနေသော binary string သည်ရှည်လျားလွန်းပြီး PHP မှထောက်ပံ့သောကိန်းဂဏန်းများထက်ကျော်လွန်ပါကဘာဖြစ်မည်နည်း။ ၎င်းသည်စူးစမ်းရကျိုးနပ်သောမေးခွန်းဖြစ်သည်, အထူးသဖြင့်ကြီးမားသောနံပါတ်များကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါသို့မဟုတ်မြင့်မားသောတိကျမှုတွက်ချက်မှုများကိုလိုအပ်သည်။
ပထမ ဦး စွာကျွန်ုပ်တို့သည် PHP ၏ကိန်းဂဏန်းများ ( int ) ၏အကွာအဝေးသည်အခြေခံပလက်ဖောင်းဖြင့်ကန့်သတ်ထားသည်ကိုကျွန်ုပ်တို့နားလည်ရန်လိုအပ်သည်။ 64-bit စနစ်များတွင် Php_int_Max သည် 9222337203688547777775807 ဖြစ်သည် ။
သင်ဖြတ်သန်းသော binary string ကိုကိုယ်စားပြုသောတန်ဖိုးသည်ဤအကွာအဝေးထက်ကျော်လွန်သောအခါ Bindec () သည် ပြန်လာတန်ဖိုးကို float type သို့အလိုအလျောက်ပြောင်းလဲလိမ့်မည်။ ဤအပြုအမူသည် PHP တွင်အမျိုးအစားပြောင်းလဲခြင်းယန္တရား၏အစိတ်အပိုင်းတစ်ခုဖြစ်ပြီးတိကျမှန်ကန်မှုကင်းမဲ့နိုင်သည်။
ဥပမာတစ်ခုကိုကြည့်ရအောင်။
$binary = '11111111111111111111111111111111111111111111111111111111111111111';
$result = bindec($binary);
var_dump($result);
ဤ binary string သည် 65-bit integer ၏အများဆုံးတန်ဖိုးထက်များစွာပိုကြီးသည်။ စစ်ဆင်ရေး၏ရလဒ်များကိုအောက်ပါအတိုင်းဖြစ်နိုင်သည် -
float(1.84467440737096E+19)
သင်မြင်နိုင်သည့်အတိုင်းပြန်လာတန်ဖိုးသည် floating point နံပါတ်ဖြစ်ပြီးသိပ္ပံနည်းကျမှတ်စုများတွင်ဖော်ပြထားသည်။ ဆိုလိုသည်မှာ -
တိကျမှန်ကန်မှုသည်တိကျမှုမဖြစ်နိုင်ပါ။
ဤရလဒ်ကိုသင်ဤရလဒ်ကိုသင်္ချာတွက်ချက်မှုများအတွက်အသုံးပြုပါကခန့်မှန်းရခက်သောအမှားများကိုမိတ်ဆက်ပေးနိုင်သည်။
အကယ်. သင်သည်ကိန်းဂဏန်းများကိုတိကျစွာကျော်လွန်သော binary နံပါတ်များကိုတိကျမှန်ကန်စွာကိုင်တွယ်ရန်လိုအပ်ပါက PHP ၏ BCMATH သို့မဟုတ် GMP တိုးချဲ့ခြင်းကိုအသုံးပြုရန်စဉ်းစားပါ။
BCMath ကိုအသုံးပြုခြင်း
$binary = '10101010101010101010101010101010101010101010101010101010101010101';
$decimal = '0';
$length = strlen($binary);
for ($i = 0; $i < $length; $i++) {
$bit = $binary[$i];
$power = bcpow('2', $length - $i - 1);
if ($bit === '1') {
$decimal = bcadd($decimal, $power);
}
}
echo $decimal; // ထုတ်လုပ်ခြင်း精确的十进制值
GMP ကိုအသုံးပြုခြင်း
$binary = '10101010101010101010101010101010101010101010101010101010101010101';
$gmp = gmp_init($binary, 2);
echo gmp_strval($gmp); // 精确ထုတ်လုပ်ခြင်း
BCMath သည်ပိုမိုကောင်းမွန်သောသဟဇာတဖြစ်သောစင်ကြယ်သော PHP အကောင်အထည်ဖော်မှုဖြစ်သည်။ GMP စာကြည့်တိုက်သည်စွမ်းဆောင်ရည်တွင်ပိုမိုအားကောင်းသော်လည်း server အထောက်အပံ့လိုအပ်သည်။
အချို့သောဒေတာများလုပ်ဆောင်ခြင်းသည် IP address များ, bit ခွင့်ပြုချက်စီမံခန့်ခွဲမှု, စာဝှက်ခြင်း algorithms စသည်ဖြင့်ကြီးမားသော binary data များကို processing binary data များပြုလုပ်ခြင်းသည်ဘုံဒြပ်ပေါင်းဒေတာများလုပ်ဆောင်ခြင်းဖြစ်သည်။ အကယ်. သင်သည် Bindec () ကို တိုက်ရိုက်သုံးပါကအောက်ပါအတိုင်းဖြစ်သည် -
bindec('1001011100101101001010010010101010010101010101010101010101010101');
အသုံးပြုသူခွင့်ပြုချက်မျက်နှာဖုံးတစ်ခုအနေဖြင့်၎င်းကိုအသုံးပြုရန်ကြိုးစားခြင်းသည်နောက်ဆက်တွဲတရားစီရင်ရာတွင်တိကျမှန်ကန်မှုကိုဆုံးရှုံးနိုင်ပြီးလုံခြုံရေးအန္တရာယ်များကိုဖြစ်ပေါ်စေသည်။ BCMATH သို့မဟုတ် GMP သည်ကိန်းဂဏန်းတိကျမှန်ကန်မှုကိုသေချာစေရန်ပိုမိုနှစ်သက်သင့်သည်။
Bindec () သည်ထိရောက်မှုရှိပြီးအဆင်ပြေပြီးအဆင်ပြေချောမွေ့ပြီးအဆင်ပြေသော်လည်း, developer များအနေဖြင့် develop-bit binary နံပါတ်များကိုကိုင်တွယ်သောအခါအချက်အလက်တိကျမှန်ကန်မှုကိုသေချာစေရန်လိုအပ်သည့်အခါအထူးတိကျသောသင်္ချာစာကြည့်တိုက်များကိုအသုံးပြုသင့်သည်။