PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်တခါတရံတွင်ကျွန်ုပ်တို့သည်ကိန်းဂဏန်းများကိုဒေတာထုပ်ပိုးခြင်း, PHP ၏ built-in pack () function သည်ဤလုပ်ငန်းကိုပြီးမြောက်ရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် Pack () function ၏အခြေခံအသုံးပြုမှုကိုမိတ်ဆက်ပေးလိမ့်မည်။
Pack () function ကို function ကို binary strings များထဲသို့အချက်အလက်များကိုထုပ်ပိုးရန်အသုံးပြုသည်။
string pack(string $format, mixed ...$values)
$ format - နောက်ဆက်တွဲ parameters တွေကိုထုပ်ပိုးကြောင်းညွှန်ပြ, format string ကို။
$ တန်ဖိုးများ - ထုပ်ပိုးခံရဖို့ဒေတာ။
Pack () သည် formatt ်အက်ခရာအမျိုးမျိုးကိုထောက်ပံ့သည်။ ဤဆောင်းပါးသည်ကိန်းဂဏန်းများကိုထုပ်ပိုးရန်အသုံးပြုသောသော့ချက်စာလုံးများစွာကိုဖော်ပြထားသည်။
ကိန်းဂဏန်းများနှင့်ဆက်ဆံရာတွင်ဤနေရာတွင်ဘုံ format ဇာတ်ကောင်များဖြစ်သည်။
C : လက်မှတ်မထိုးထားသောစာလုံးများ (1 byte, range 0-255)
n : လက်မှတ်မထိုးထားသောကိန်းတို (2 Bytes, Network Enterianness)
v : လက်မှတ်မထိုးထားသောကိန်းတို (2 byte အမိန့်)
N : လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်း (4 bytes, network endianness, big endianness)
v : လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်းဂဏန်း (4 bytes, host Endian, STERENEL)
J : IFFIGNED 64-bit Integer (PHP 5.6+ အထောက်အပံ့များ)
ဥပမာအားဖြင့်, ကိန်းဂဏန်း 1234 ကို 2-byte network endianness binary string ကိုပြောင်းပါ။
$binary = pack("n", 1234);
4294967295 (I.E. ၏အများဆုံးတန်ဖိုး) ကို Connect to Network byte အမိန့်သို့ပြောင်းရန်ကျွန်ုပ်တို့ပြောင်းလဲလိုပါသည်။
$int = 4294967295;
$binary = pack("N", $int);
echo bin2hex($binary); // ထုတ်လုပ်ခြင်း:ffffffff
အသုံးပြုသူ ID (4 bytes), အဆင့် (1 byte), အဆင့် (1 byte) ပါ 0 င်သည့် binary data file တစ်ခုကိုကျွန်ုပ်တို့တည်ဆောက်လိုကြောင်းဆိုပါစို့။
$userId = 1001;
$level = 5;
$status = 1;
$data = pack("NCC", $userId, $level, $status);
file_put_contents("user_data.bin", $data);
ထုတ်ပေးသောဖိုင်တွင်သက်ရှိ 7-byte binary content များပါ 0 င်မည်ဖြစ်ပြီး embedded systems သို့မဟုတ် cross-platform data data လဲလှယ်ခြင်းအတွက်အကောင်းဆုံးဖြစ်သည်။
ဥပမာအားဖြင့်, အကယ်. သင်သည်ဂိမ်းဆာဗာဆက်သွယ်ရေး protocol ကိုတီထွင်ပါက 0 န်ဆောင်မှုခံယူသူသည်ဒေတာ packets များကိုအောက်ပါဖွဲ့စည်းတည်ဆောက်ပုံနှင့်ပို့ရန်လိုအပ်သည်။
Baotou (2 bytes 0xabcd သို့ fixed)
ဒေတာအရှည် (2 bytes)
အသုံးပြုသူ ID (4 bytes)
တိုကင် string ကို (variable အရှည်)
သင်ဤကဲ့သို့သောတည်ဆောက်နိုင်:
$header = 0xABCD;
$userId = 12345;
$token = "abc123token";
$length = 4 + strlen($token);
$packet = pack("nnN", $header, $length, $userId) . $token;
// ဆာဗာလိပ်စာသို့ပို့ပါ,ဥပမာအားဖြင့်:http://m66.net/api/receive_packet
ဆာဗာကိုလက်ခံပြီးနောက်၎င်းသည်ဒေတာများကိုပြန်လည်ရယူရန် () ဖြည်ချ နိုင်သည်။
Enterian ပြ problem နာ - ပလက်ဖောင်းများသို့မဟုတ်ကွန်ယက်များအကြားဆက်သွယ်သည့်အခါ,
အမျိုးအစားကန့်သတ်ချက် - ကိန်းဂဏန်းများကိုသတ်မှတ်ထားသော format ဇာတ်ကောင်များ၏ခွင့်ပြုထားသောတန်ဖိုးများကိုသေချာစေပါ။
Unpack () : pack (): pack () နှင့်ဖြည့်တင်းခြင်း () နှင့် ဖြည့်တင်းခြင်း () ကို အတွဲများဖြင့်အသုံးပြုသည်။ ၎င်းသည် encoding နှင့် decoding အတွက်အဆင်ပြေသည်။
pack () function ကိုဖြင့် PHP ပရိုဂရမ်မာများသည်ကိန်းဂဏန်းများကိုအလွယ်တကူပြောင်းလဲနိုင်သည်။ ၎င်းသည်နောက်ခံ protocols များကိုကိုင်တွယ်ရာတွင်အထူးသဖြင့်ဖိုင်ပုံစံများကိုထုတ်လုပ်ခြင်းသို့မဟုတ် PHP စနစ်များနှင့်ဆက်သွယ်ခြင်းကိုပြုလုပ်ရာတွင်အထူးအရေးကြီးသည်။ Format Sities ကို အသုံးပြု. ကျွမ်းကျင်မှုသည် PHP ၏နောက်ခံအပြောင်းအလဲအတွက်ကျွမ်းကျင်မှုအတွက်အဓိကခြေလှမ်းဖြစ်သည်။