လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> base_convertert () function တွင်အပျက်သဘောဆောင်သောကူးပြောင်းမှုကိုကိုင်တွယ်သည့်အခါကြိုတင်ကာကွယ်မှုများကဘာတွေလုပ်နေလဲ။

base_convertert () function တွင်အပျက်သဘောဆောင်သောကူးပြောင်းမှုကိုကိုင်တွယ်သည့်အခါကြိုတင်ကာကွယ်မှုများကဘာတွေလုပ်နေလဲ။

gitbox 2025-08-15
<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-string">"ကွပ်မျက်စတင်ပါ PHP လက်ရေး...\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
 * base_convert() function ကိုအတွက်အနုတ်လက်ခဏာ binary ကူးပြောင်းခြင်းလုပ်ဆောင်တဲ့အခါ,ကြိုတင်ကာကွယ်မှုများကဘာတွေလဲ?
 *
 * base_convert() ဟုတ်ကဲ့ PHP တစ် ဦး built-in function ကို,ကွဲပြားခြားနားသောဂဏန်းများအကြားဂဏန်းကြိုးများပြောင်းလဲရန်အသုံးပြုခဲ့သည်。
 * 它的函数签名ဟုတ်ကဲ့:string base_convert(string $number, int $from_base, int $to_base)
 *
 * ဒါပေမယ့်အမှန်တကယ်အသုံးပြုမှု၌တည်၏,base_convert() ၎င်းသည်အနုတ်လက်ခဏာနံပါတ်များကိုတိုက်ရိုက်အပြောင်းအလဲနဲ့မထောက်ပံ့ပါ。
 * အောက်ဖော်ပြပါအချက်များအရအနုတ်လက်ခဏာနံပါတ်များနှင့်တစ်စိတ်တစ်ပိုင်းနံပါတ်များကိုပြောင်းလဲသည့်အခါအာရုံစိုက်ရန်အဓိကအချက်များကိုအသေးစိတ်ရှင်းပြလိမ့်မည်။。
 */</span>

</span><span><span class="hljs-comment">// 1. base_convert() အနုတ်လက်ခဏာထည့်သွင်းမှုကိုမပံ့ပိုးပါ</span></span><span>
</span><span><span class="hljs-comment">// base_convert() ခံယူ $number 参数ဟုတ်ကဲ့字符串形式的数字,且该数字只能ဟုတ်ကဲ့非负整数。</span></span><span>
</span><span><span class="hljs-comment">// အနုတ်လက်ခဏာနိမိတ်လက်ခဏာနှင့်အတူ string ကိုကူးလျှင်(ကဲ့သို့ "-15"),လုပ်ဆောင်ချက်များကိုတရားမ 0 င်ဇာတ်ကောင်များအဖြစ်အနုတ်လက်ခဏာသင်္ကေတများကိုလျစ်လျူရှုကြသည်,မမှန်ကန်ကြောင်းရလဒ်များဖြစ်ပေါ်စေသည်。</span></span><span>

</span><span><span class="hljs-comment">// နမူနာ</span></span><span>
</span><span><span class="hljs-variable">$negativeNumber</span></span><span> = </span><span><span class="hljs-string">"-15"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$negativeNumber</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ရလဒ်ပြောင်းလဲ(အနုတ်လက်ခဏာနိမိတ်လက်ခဏာနှင့်အတူရိုက်ထည့်ပါ): <span class="hljs-subst">$result</span></span></span><span>\n"; 
</span><span><span class="hljs-comment">// output ရလဒ်ကအနုတ်လက်ခဏာနိမိတ်လက်ခဏာကိုလျစ်လျူရှုပါလိမ့်မယ်,ပြောင်းလဲခြင်းနှင့်ညီမျှသည်“15”,并不ဟုတ်ကဲ့期望的负数二进制表示。</span></span><span>

</span><span><span class="hljs-comment">// 2. အနုတ်လက်ခဏာနံပါတ်များကိုကိုင်တွယ်ရန်ဘုံနည်းလမ်းများ</span></span><span>
</span><span><span class="hljs-comment">// အကေြာင်းမှာ base_convert() အနုတ်လက်ခဏာပြောင်းလဲခြင်းကိုမထောက်ပံ့ပါ,通常的做法ဟုတ်ကဲ့先检测数字的正负号,</span></span><span>
</span><span><span class="hljs-comment">// ထို့နောက်အကြွင်းမဲ့အာဏာတန်ဖိုးကိုတစ် ဦး binary ထုံးစံ၌ကူးပြောင်းသည်,နောက်ဆုံးအနေဖြင့်အပျက်သဘောဆောင်သောနိမိတ်လက်ခဏာကိုကိုယ်တိုင်ထည့်ပါ。</span></span><span>

</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">base_convert_negative</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$number</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$from_base</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$to_base</span></span><span>): </span><span><span class="hljs-title">string</span></span><span> {
    </span><span><span class="hljs-variable">$isNegative</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>) &gt; </span><span><span class="hljs-number">0</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$number</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>] === </span><span><span class="hljs-string">'-'</span></span><span>) {
        </span><span><span class="hljs-variable">$isNegative</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
        </span><span><span class="hljs-variable">$number</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
    }
    </span><span><span class="hljs-variable">$converted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>, </span><span><span class="hljs-variable">$from_base</span></span><span>, </span><span><span class="hljs-variable">$to_base</span></span><span>);
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$isNegative</span></span><span> ? </span><span><span class="hljs-string">'-'</span></span><span> . </span><span><span class="hljs-variable">$converted</span></span><span> : </span><span><span class="hljs-variable">$converted</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__">base_convert_negative</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">2</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;  </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း:-1111</span></span><span>

</span><span><span class="hljs-comment">// 3. binary ကူးပြောင်းခြင်းအတွက်အကွာအဝေးကန့်သတ်</span></span><span>
</span><span><span class="hljs-comment">// base_convert() 支持的进制范围ဟုတ်ကဲ့ 2 ရောက်လာ 36。</span></span><span>
</span><span><span class="hljs-comment">// ကဲ့သို့果试图转换超出这个范围的进制,အဆိုပါ function ကိုတစ် ဦး အချည်းနှီးသော string ကိုပြန်လာ。</span></span><span>
</span><span><span class="hljs-comment">// ဒါကြောင့်အနုတ်လက်ခဏာနံပါတ်များနှင့်ဆက်ဆံတဲ့အခါ,0 င်ရောက်လာသည့်ကွဲပြားမှုသည်တရားဝင်ဖြစ်ကြောင်းသေချာစေရန်လည်းလိုအပ်သည်。</span></span><span>

</span><span><span class="hljs-comment">// 4. အနုတ်လက်ခဏာနံပါတ်များ၏တစ်စိတ်တစ်ပိုင်းစကားရပ်</span></span><span>
</span><span><span class="hljs-comment">// အချို့သောအခြေအနေများတွင်,ဖြည့်စွက်ပုံစံအတွက်အနုတ်လက်ခဏာနံပါတ်များကိုကိုယ်စားပြုရန်နှစ်လိုဖွယ်ဖြစ်ပါသည်。</span></span><span>
</span><span><span class="hljs-comment">// ဒါပေမဲ့ base_convert() 只ဟုတ်ကဲ့简单转换数值,ဖြည့်စွက်ခြင်းသို့မဟုတ်လက်မှတ်ရေးထိုးခဲ့ခြင်းအတွက်အထောက်အပံ့မရှိပါ。</span></span><span>
</span><span><span class="hljs-comment">// ကဲ့သို့果需要补码表示,bit operty and format လုပ်ခြင်းကိုသင်ကိုယ်တိုင်ကိုင်တွယ်ရမည်。</span></span><span>

</span><span><span class="hljs-comment">// 5. အကျဉ်းချုပ်</span></span><span>
</span><span><span class="hljs-comment">// - base_convert() အနုတ်နံပါတ်များကိုတိုက်ရိုက်ပြောင်းလဲခြင်းကိုမပံ့ပိုးပါ。</span></span><span>
</span><span><span class="hljs-comment">// - အနုတ်လက်ခဏာနိမိတ်လက္ခဏာများကိုကိုယ်တိုင်ခွဲထုတ်ရန်လိုအပ်သည်,အကြွင်းမဲ့အာဏာတန်ဖိုးကိုပြောင်းလဲ,အနုတ်လက်ခဏာသင်္ကေတထည့်ပါ。</span></span><span>
</span><span><span class="hljs-comment">// - ဌာနခွဲ၌ဖြစ်ရမည် 2 ရောက်လာ 36 အကြား。</span></span><span>
</span><span><span class="hljs-comment">// - ဖြည့်စွက်ကုဒ်သို့မဟုတ်အခြားအနုတ်လက်ခဏာ binary ကိုယ်စားပြုမှုကိုသင်ကိုယ်တိုင်အကောင်အထည်ဖော်ရန်လိုအပ်သည်。</span></span><span>

</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>