Pack () function ကို package သည်သတ်မှတ်ထားသော format string နှင့်ဒေတာများကို binary strings များအဖြစ်ထုပ်ပိုးထားသည်။ ဥပမာအားဖြင့် Pack (C ", 65) သည် ASCII Code 65 (I.E. , ဇာတ်ကောင်") နှင့်အတူတစ်ခုတည်းသောဇာတ်ကောင်ပါ 0 င်သော binary string ကိုပြန်ပို့သည်။ format strings များကိုဒေတာ၏အပြင်အဆင်ကိုဖော်ပြရန်အသုံးပြုသည်။ ဘုံ format ကို codes များပါဝင်သည်:
C : IFFIGNED ဇာတ်ကောင် (8-bits, 0-255)
N : လက်မှတ်မထိုးထားသောကိန်းတို (16-bit, big-endian endian)
N : လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်းဂဏန်း (32-bit, Big-endian endian)
H ကို * : Hexadecimal String (High Bit Be Beat)
ဥပမာအားဖြင့်:
$bin = pack("C*", 72, 101, 108, 108, 111); // သက်ဆိုင်ရာဇာတ်ကောင် "Hello"
echo $bin; // ထုတ်လုပ်ခြင်း Hello
ဤလုပ်ငန်းစဉ်သည်ကိန်းဂဏန်းများကို compressed binary string ထဲသို့ပြောင်းခြင်းနှင့်တူသည်။
POSIC ()) နှင့်မတူဘဲ, အမှာစာ () () () သည် စာလုံးများကိုသူတို့၏သက်ဆိုင်ရာ ASCII သို့မဟုတ် Unicode တန်ဖိုးများသို့ပြောင်းလဲရန်အသုံးပြုသည်။ ၎င်းသည် "decoder" ၏ decoder "ဖြစ်သည် () binary strings မှအချက်အလက်များကိုထုတ်ယူသောအခါအလွန်အသုံးဝင်သည်။
ဥပမာအားဖြင့်:
$char = "A";
$ascii = ord($char); // ပြန်လာ 65
ဤလုပ်ဆောင်မှုသည် Pack () နှင့်ပူးပေါင်းဆောင်ရွက်ရန်အတွက်အလွန်သင့်လျော်သည်။
Binary မှထုတ်ယူသောအခါအမှာစာကိုအသုံးပြုသောအခါ Pack () ကို သုံး ပါ။ ဤသည်နှစ်ခုအကြားဖြည့်စွက်ဆက်ဆံရေးပါဝင်သည်။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည်နံပါတ်များကိုပထမ ဦး ဆုံးအကြိမ်စီစဉ်ပြီးသူတို့ကို byte byte ကိုခွဲခြမ်းနေကြသည်။
$data = [77, 54, 54];
$bin = pack("C*", ...$data);
// တစ်ခုချင်းစီကို byte ဖတ်ပါ
for ($i = 0; $i < strlen($bin); $i++) {
echo ord($bin[$i]) . "\n"; // ထုတ်လုပ်ခြင်း 77, 54, 54
}
ဤကုဒ်တွင် 0 င်ရောက်မှု (77, 54, 54, 54) ကိုသုံး byte binary string ကိုပြောင်းလဲရန် Pack () ကို အသုံးပြု သည်။
တိကျသော protocols များအတွက် binary မက်ဆေ့ခ်ျများတည်ဆောက်ရာတွင်ဤနည်းသည်အထူးအသုံးဝင်သည်။ ဥပမာအားဖြင့်, link link တောင်းဆိုမှုအထုပ်တစ်ခုနှင့်ဆင်တူသည်။
$url_id = 1234;
$payload = pack("N", $url_id);
file_put_contents("http://m66.net/api/store", $payload);
ဆာဗာသည်ဤ 4-byte ဒေတာများကိုလက်ခံရရှိပြီးနောက်၎င်းကိုအောက်ပါအတိုင်းခွဲခြမ်းစိတ်ဖြာနိုင်သည် -
$data = file_get_contents("php://input");
$url_id = unpack("N", $data)[1];
ဤတွင် Pack ("N", $ url_id) နှင့် ဖြည့်စွက် ("N", $ ဒေတာ) သည်ဖြည့်စွက်လုပ်ငန်းများအတိအကျတစ်မျိုးဖြစ်သည်။
ဥပမာအားဖြင့်, ပေါ့ပါးသော encression သို့မဟုတ်စိတ်ကြိုက် protract protocol အချို့ကိုအကောင်အထည်ဖော်သည့်အခါစာသားအချက်အလက်များကို dialog saltions bytes များသို့ပြောင်းလဲရန်လိုအပ်နိုင်သည်။
$text = "Hi!";
$encrypted = "";
for ($i = 0; $i < strlen($text); $i++) {
$encrypted .= pack("C", ord($text[$i]) + 1);
}
// ရေှ့ပညာ
$decrypted = "";
for ($i = 0; $i < strlen($encrypted); $i++) {
$decrypted .= chr(ord($encrypted[$i]) - 1);
}
echo $decrypted; // ထုတ်လုပ်ခြင်း Hi!
ဤဥပမာတွင် () () အက္ခရာများကိုနံပါတ်များ, pack () ကို binary သို့လှည့်ပြီးအမှာစာဖြင့်ပြန်ဖွင့်ထားသည် ။