PHP တွင် POST () function ကိုသတ်မှတ်ထားသောပုံစံဖြင့် binary strings များထဲသို့ထည့်ရန်အသုံးပြုသည်။ ကွန်ယက် protocols သို့မဟုတ် binary files များနှင့်ဆက်ဆံရာတွင် developer များစွာသည်၎င်းကိုအသုံးပြုကြသည်။ Pack ("N", 12345) သည်ပုံမှန်အသုံးပြုမှုတစ်ခုဖြစ်သည်။ ဆိုလိုသည်မှာ Integer 12345 သည်ကြီးမားသော Endian Byte အမိန့် (Network byte order) တွင် 4-byte binary string ကိုထုပ်ပိုးထားသည်။
သို့သော်တစ်ခါတစ်ရံတွင် Pack ကိုအသုံးပြုပြီးနောက်သင်ရရှိသောရလဒ်များသည်သင်မျှော်လင့်ထားသည့်ရလဒ်များနှင့်မကိုက်ညီကြောင်းသင်တွေ့ရှိနိုင်သည်ကိုသင်တွေ့ရှိနိုင်သည်။ ဒါဘာကြောင့်လဲ ဤဆောင်းပါးသည်သင့်အားနောက်ကွယ်ရှိအခြေခံမူများကိုဆန်းစစ်ရန်ကူညီပေးသည်။
"N" format chat chormal ကို Pack () တွင်ကိုယ်စားပြုသည်။
N : လက်မှတ်မထိုးထားသောရှည်လျားသော (4) bites 32-bit offiged integer)
Big-endian, ဒါကအမြင့်ဆုံး byte ရှေ့မှာရှိနေပြီးအနိမ့် byte နောက်ကျောမှာဖြစ်ပါတယ်
ဥပမာအားဖြင့်, Integer 12345 ၏ hexadecimal ကိုယ်စားပြုမှုသည် 0x3039 ဖြစ်ပြီး 4 င်း၏သက်ဆိုင်ရာ 4-byte big-endian ဖြစ်သည်။
00 00 30 39
ထို့ကြောင့်, Pack မှထုတ်လုပ်သော binary string ကို ("N" 12345) ကို hexadecimal သို့ပြောင်းလဲသင့်သည်။
လူအများစုကရလဒ်များသည် "မှားယွင်းသော" ရလဒ်များနှင့်ဘုံအကြောင်းပြချက်များမှာ -
browser သို့မဟုတ် terminal ကို browser or terminal သို့တိုက်ရိုက်ထုတ်ယူခြင်း , မမြင်ရသောဇာတ်ကောင်များစွာပါ 0 င်သည့်သို့မဟုတ်အချို့သော bytes များကို concled code နှင့်တူသည်။
Binary ရလဒ်ကို hexadecimal သို့မဟုတ် base64 ကဲ့သို့သောဖတ်နိုင်သောပုံစံသို့ကူးပြောင်းခြင်းမရှိပါ ။
ရလဒ်ကိုမျှော်လင့်ခြင်းသည်အမှန်တကယ်အဓိပ္ပာယ်ကိုမကိုက်ညီပါ ။ ဥပမာ - Pack ("N", 12345) ကို "12345" ကိုတိုက်ရိုက်ထုတ်လွှင့်ခြင်း,
အောက်ပါ PHP ကုဒ်ကိုရေးပါဆိုပါစို့။
<?php
$binary = pack("N", 12345);
echo bin2hex($binary);
?>
စစ်ဆင်ရေး၏ရလဒ်မှာ:
00003039
ဤသည်မျှော်လင့်ထားသည့် 4-byte ကြီးမားသောရလဒ်ဖြစ်သည်။
သင် echo $ binary ကိုသုံးလျှင်, တိုက်ရိုက်ပါ, concled code သို့မဟုတ် blank ကိုသင်တွေ့လိမ့်မည်။ ဘာဖြစ်လို့လဲဆိုတော့ $ binary သည်သာမန်စာသားမဟုတ်ဘဲ binary data ဖြစ်သည်။
အမှားသရုပ်ပြ
<?php
echo pack("N", 12345);
?>
0 က်ဘ်စာမျက်နှာသို့မဟုတ် terminal ကို output ကို output ကိုဖွင့်ပါက condbled code သို့မဟုတ်မြင်နိုင်သောစာလုံးများမတွေ့ရပါ။ ဒါကမင်းကို pack ရဲ့ရလဒ်ကမှားတယ်လို့ထင်စေတယ်။
Pack ("N" 12345) သည် နံပါတ် 12345 ကိုကိုယ်စားပြုသော Big-endian byte အမိန့်တွင် 4-byte binary string ကိုပြန်ပို့သည်။
ရလဒ်မှာ binary data မဟုတ်ဘဲ string မဟုတ်ဘဲ "12345" ဖြစ်သည်။
ရလဒ်များကိုကြည့်ရှုသောအခါ၎င်းကို Bin2Hex () သို့မဟုတ်အလားတူနည်းလမ်းများဖြင့်ဖတ်နိုင်သောပုံစံသို့ပြောင်းရန်အကောင်းဆုံးဖြစ်သည်။
binary output ကို၏တိုက်ရိုက်ထုတ်လွှထုတ်ကုန်များသည် "ထူးဆန်းသော" ရလဒ်များဖြစ်သော်လည်းအမှားအယွင်းများမဟုတ်ပါ။
<?php
// နံပါတ်ကိုထည့်ပါ12345သို့ထုပ်ပိုး4byte Big-endian binary
$binary = pack("N", 12345);
// binary ၏ hexadecimal ကိုယ်စားပြုမှုပြသထားတယ်,အဆင်ပြေလေ့လာရေး
echo "Hex representation: " . bin2hex($binary) . "\n";
// ကိုလည်းအသုံးပြုနိုင်ပါတယ် unpack anti- decompression
$unpacked = unpack("N", $binary);
echo "Unpacked number: " . $unpacked[1] . "\n";
?>
execute ပြီးနောက် output:
Hex representation: 00003039
Unpacked number: 12345
POSP အကြောင်း PHP တရားဝင်စာရွက်စာတမ်းများ
binary data processing အတွက် endian ၏အရေးပါမှုကိုနားလည်ပါ
ကွန်ယက် protocol နှင့် binary data အကြားဆက်နွယ်မှု