လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP ၏ octdec နှင့် decoct လုပ်ဆောင်ချက်များကို Octal နှင့် Decimal အကြားဗုတ်yriagealပြောင်းလဲခြင်းကိုအကောင်အထည်ဖော်ရန်အသုံးပြုနိုင်ပါသလား။

PHP ၏ octdec နှင့် decoct လုပ်ဆောင်ချက်များကို Octal နှင့် Decimal အကြားဗုတ်yriagealပြောင်းလဲခြင်းကိုအကောင်အထည်ဖော်ရန်အသုံးပြုနိုင်ပါသလား။

gitbox 2025-09-12

- အကြောင်းအရာနှင့်ဘာမှမဆိုင်ပါဘူးအကြောင်းအရာခွဲခြား

အရင်ပြောကြရအောင် - ဟုတ်တယ်octdec () ကို octal strings → decimals ကိန်းများ နှင့် decoct () decoct () decoct () decimal integers → octal strings ကို အသုံးပြုရန်အသုံးပြုသည်။ နှစ်ခုပေါင်းစပ်မှုသည်နှစ်လမ်းသွားပြောင်းလဲခြင်းကိုအောင်မြင်နိုင်သည်။ အောက်ပါတို့သည်အသုံးပြုမှု,

1 ။ အခြေခံအသုံးပြုမှု

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ကားအောက်သံ → ဒက်မချက်</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">octdec</span></span><span>(</span><span><span class="hljs-string">'17'</span></span><span>);   </span><span><span class="hljs-comment">// 15</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> PHP_EOL;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">octdec</span></span><span>(</span><span><span class="hljs-string">'011'</span></span><span>);  </span><span><span class="hljs-comment">// 9(string ကိုအတွက် ဦး ဆောင်ဇာတ်ကောင် 0 အဓိပ္ပာယ်ကိုပြောင်းလဲလိမ့်မည်မဟုတ်ပါ,它仍按ကားအောက်သံ解析)</span></span><span>

</span><span><span class="hljs-comment">// ဒက်မချက် → ကားအောက်သံ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-number">15</span></span><span>);     </span><span><span class="hljs-comment">// "17"</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> PHP_EOL;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-number">9</span></span><span>);      </span><span><span class="hljs-comment">// "11"</span></span><span>
</span></span>

အဓိကအချက်များ

  • octdec (string ကို Uctal): int - int - parameter သည် string တစ်ခုဖြစ်သည်

  • Decoct (INT $ Decimal): string ကို - ကွမ်းခြံကုန်း များမှာ ကိန်းများ ,

2 ။ ဘုံထောင်ချောက်များနှင့်နယ်နိမိတ်

(1) တရားမဝင်ဇာတ်ကောင်

octal 0-7 သာခွင့်ပြုပါတယ်။ 8, 9 သို့မဟုတ် Non-Non-Non-Non- ကိန်းဂဏန်းများကိုဖြတ်သန်းပြီးနောက်ပထမ ဦး ဆုံးတရားမဝင်တည်နေရာကိုလျစ်လျူရှုလိမ့်မည်။ ၎င်းသည် ပထမ ဦး ဆုံးအတည်ပြုရန်အလုံခြုံဆုံးဖြစ်ပြီးနောက်ပြောင်းလဲရန်ဖြစ်သည်

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">isValidOctal</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$s</span></span><span>): </span><span><span class="hljs-title">bool</span></span><span> {
    </span><span><span class="hljs-comment">// ခဲခွင့်ပြုပါ 0;至少一个ကားအောက်သံ数字</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> (</span><span><span class="hljs-keyword">bool</span></span><span>)</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">'/^[0-7]+$/'</span></span><span>, </span><span><span class="hljs-variable">$s</span></span><span>);
}

</span><span><span class="hljs-variable">$input</span></span><span> = </span><span><span class="hljs-string">'128'</span></span><span>; </span><span><span class="hljs-comment">// တရားမဝင်သော</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">isValidOctal</span></span><span>(</span><span><span class="hljs-variable">$input</span></span><span>)) {
    </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">InvalidArgumentException</span></span><span>(</span><span><span class="hljs-string">"不是合法的ကားအောက်သံ数:<span class="hljs-subst">{$input}</span></span></span><span>");
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">octdec</span></span><span>(</span><span><span class="hljs-variable">$input</span></span><span>);
</span></span>

(2) 0 0 နှင့် "octal literal" ကိုကုဒ်ထဲမှ ဦး ဆောင်ပါ

  • string "011" သည်စာသားသာဖြစ်သည်။ Octdec ("011") သည် octal ("011") ကိုသာခွဲထားလိမ့်မည်။

  • PHP Code တွင် PHP Code တွင် PHP Code ရှိ PHP Code တစ်ခုလုံး တွင်ရေးသားထားပါက၎င်းသည် octal lional အရေအတွက် (ဒ decimal မ 9 နှင့်ညီသည်) ဖြစ်သည်။ စိတ်ရှုပ်ထွေးမှုများကိုရှောင်ရှားရန် Source Code တွင် ဦး ဆောင်သည့်ကိန်းဂဏန်းများနှင့်သက်ဆိုင်သောဂဏန်းများကိုအသုံးပြုခြင်းကိုရှောင်ရှားရန်အကြံပြုသည်။ octdec လိုအပ်သည့်အခါ octdec () နှင့်အတူ strings ကိုသုံးရန်ရှင်းလင်းသောနည်းလမ်း။

(3) အနုတ်လက်ခဏာနံပါတ်နှင့် bit width

decoct () decoct ဖို့ အငြင်းအခုံတစ်ခုကိန်းဖြစ်ပါတယ်။ အနှုတ်လက်ခဏာ နံပါတ်များသည်အကောင်အထည်ဖော်မှုပလက်ဖောင်း၏အကျယ်အ 0 င် (များသောအားဖြင့် 64 bits) ၏အနိမ့်အမြင့်နှင့်အညီနှစ်နိုင်ငံအကြားပူးပေါင်းပါဝင်မှုတွင်ပါ 0 င်သည်။ အထူးလိုအပ်ချက်မရှိပါက ကျေးဇူးပြု. အနုတ်လက်ခဏာမဟုတ်သောကိန်းများကိုသာကိုင်တွယ်ပါ။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(-</span><span><span class="hljs-number">10</span></span><span>); </span><span><span class="hljs-comment">// ပလက်ဖောင်းအားဖြင့်ကွဲပြားခြားနားသည်,များသောအားဖြင့်ရှည်လျားသော string ကို</span></span><span>
</span></span>

(4) ကြီးမားသောကိန်း

  • 64-bit php တွင်အများဆုံး Int သည် 9.22E18 ဖြစ်သည်။ decoct () ဒီကန့်သတ်ထားသည်။

  • အလွန်ကြီးမားသောဒ decimal မကိန်းဂဏန်းများ ( INT အကွာအဝေးထက်ကျော်လွန်) ၏ပြောင်းလဲမှုများကိုဖြေရှင်းရန်လိုအပ်ပါက -

    • gmp_ * (ဥပမာ GMP_INIT + GMP_STSSTALVAL ) ကိုသုံးပါ။

    • သို့မဟုတ် BC / Self-Self-Write MANESS algorithm ကိုသုံးပါ။

  • octal →ဒ decimal ကိန်း , အကယ်. ၎င်းသည် code ထက်ကျော်လွန်ပါက ကျေးဇူးပြု. GMP / BC အစီအစဉ်ကိုသုံးပါ။

3 ။ လက်တွေ့အထုပ်: Robrust Bidirectional ပြောင်းလဲခြင်း

octal string →ဒ decimal မ ( Int သို့ပြန်သွားပါ)

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">octalToDecimal</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$oct</span></span><span>): </span><span><span class="hljs-title">int</span></span><span> {
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">'/^[0-7]+$/'</span></span><span>, </span><span><span class="hljs-variable">$oct</span></span><span>)) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">InvalidArgumentException</span></span><span>(</span><span><span class="hljs-string">"တရားမဝင်သောကားအောက်သံ:<span class="hljs-subst">$oct</span></span></span><span>");
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">octdec</span></span><span>(</span><span><span class="hljs-variable">$oct</span></span><span>);
}
</span></span>

ဒ decimal မ (non-non-nonde nonom ) → octal string ကို

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">decimalToOctal</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">int</span></span></span><span> </span><span><span class="hljs-variable">$dec</span></span><span>): </span><span><span class="hljs-title">string</span></span><span> {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$dec</span></span><span> &lt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">InvalidArgumentException</span></span><span>(</span><span><span class="hljs-string">"အနုတ်လက်ခဏာမဟုတ်သောကိန်းဂဏန်းများသာထောက်ပံ့သည်"</span></span><span>);
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$dec</span></span><span>);
}
</span></span>

Advanced: GMP နှင့်စူပါအမြောက်အများကိုထောက်ပံ့သည်

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">octalToDecimalBig</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$oct</span></span><span>): </span><span><span class="hljs-title">string</span></span><span> {
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">'/^[0-7]+$/'</span></span><span>, </span><span><span class="hljs-variable">$oct</span></span><span>)) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">InvalidArgumentException</span></span><span>(</span><span><span class="hljs-string">"တရားမဝင်သောကားအောက်သံ:<span class="hljs-subst">$oct</span></span></span><span>");
    }
    </span><span><span class="hljs-variable">$g</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gmp_init</span></span><span>(</span><span><span class="hljs-variable">$oct</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>);
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">gmp_strval</span></span><span>(</span><span><span class="hljs-variable">$g</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>); </span><span><span class="hljs-comment">// 返回ဒက်မချက်“ကြိုး”</span></span><span>
}

</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">decimalToOctalBig</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$dec</span></span><span>): </span><span><span class="hljs-title">string</span></span><span> {
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">'/^[0-9]+$/'</span></span><span>, </span><span><span class="hljs-variable">$dec</span></span><span>)) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">InvalidArgumentException</span></span><span>(</span><span><span class="hljs-string">"တရားမဝင်သောဒက်မချက်:<span class="hljs-subst">$dec</span></span></span><span>");
    }
    </span><span><span class="hljs-variable">$g</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gmp_init</span></span><span>(</span><span><span class="hljs-variable">$dec</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">gmp_strval</span></span><span>(</span><span><span class="hljs-variable">$g</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>);
}
</span></span>

ထိပ်ဖျား: GMP extension ကိုပတ်ဝန်းကျင်တွင်ဖွင့်ထားရန်လိုအပ်သည်။ GMP ကိုအသုံးမပြုပါကဒီဂျစ်တယ်ပြောင်းလဲခြင်းကို ဘီစီ (သို့) စင်ကြယ်သော PHP ကို ​​အသုံးပြု. အကောင်အထည်ဖော်နိုင်သည်။

4 ။ BASE_CONVERT နှင့်နှိုင်းယှဉ်ပါက ()

Base_Convert (string $ num, $ မှ $ မှ $ မှရရှိသည်) သည် binary ပြောင်းလဲခြင်းကိုအကောင်အထည်ဖော်နိုင်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-string">'17'</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>); </span><span><span class="hljs-comment">// "15"</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-string">'15'</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>); </span><span><span class="hljs-comment">// "17"</span></span><span>
</span></span>

ကွဲပြားခြားနားမှုနှင့်အပေးအယူ - offs:

  • base_convertert () input / output under များသည် "စာသားအခြေပြုပြောင်းလဲခြင်း" ၏ semantics နှင့်ပိုမိုနီးကပ်သော strings နှစ်ခုလုံး strings နှစ်ခုလုံး ,

  • octdec () / decoct () သည် "octal? decimal" decimal api နှင့်ပိုမိုနီးကပ်စွာ semantics နှင့် octdec () ကို တိုက်ရိုက်ပြန်ပို့သည်။

  • Super Overtegers ကြီးများနှင့်ရင်ဆိုင်ရသောအခါ Base_Convert () သည် အချို့သောအခြေအနေများတွင်အကောင်အထည်ဖော်မှုနှင့်တိကျသောကန့်သတ်ချက်ရှိသည်။ လုံးဝလုံခြုံမှုရှိရန် GMP / BC ကို အသုံးပြုရန်အကြံပြုသည်။

5 ။ အကျဉ်းချုပ်

  • အဖြေ - ဟုတ်တယ်။ octdec () (octal string → decimal int ) နှင့် decoct ( decimal in int → oct → oct → oct string) ကိုသုံးပါ။

  • ကျေးဇူးပြု. ထုတ်လုပ်မှုအလေ့အကျင့်တွင်သတိပြုပါ။ input screenification, အနုတ်လက်ခဏာနံပါတ်ပြုပြင်ခြင်း, ကြီးမားသောအရေအတွက်လိုအပ်ပါက GMP / BC Solutions များကိုရွေးချယ်ရန် ပို. အားကောင်းလာသည်။