PHP တွင် PHP တွင် Pack () function သည်သတ်မှတ်ထားသောပုံစံဖြင့်ဒေတာများကို binary strings များထဲသို့ထည့်သွင်းနိုင်သည့်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်ပြီးဒေတာထုတ်လွှင့်ခြင်း, ဖိုင်ရေးသားခြင်းနှင့်ကွန်ယက် protocol အကောင်အထည်ဖော်မှုကဲ့သို့သောဖြစ်ရပ်များတွင်ကျယ်ပြန့်စွာအသုံးပြုသည်။ ဤဆောင်းပါးသည်အစီအစဉ်များကိုထုပ်ပိုးရန်နှင့်၎င်းတို့၏အသုံးပြုမှု, လက်တွေ့ကျသောနည်းစနစ်များနှင့်ဘုံလျှောက်လွှာများကိုခွဲခြမ်းစိတ်ဖြာရန် Pack (C * ") ကို မည်သို့အသုံးပြုရမည်ကိုအဓိကထားသည်။
အထုပ် ၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
string pack ( string $format , mixed ...$values )
$ format သည် အချက်အလက်များ၏ထုပ်ပိုးပုံစံကိုသတ်မှတ်သည့်အခါ "C" သည် parameter ကိုလက်မခံနိုင်သောဇာတ်ကောင်များသို့ပြောင်းလဲခြင်းကိုဆိုလိုသည်။ "C *" ဆိုသည်မှာ array တစ်ခုစီအတွက်တစ်ခုတည်းသော byte တစ်ခုတည်းအဖြစ် arete တစ်ခုစီအတွက်သင့်တော်သော uny enyting အတွက်သင့်လျော်သော uny unsigned character format ရှိတန်ဖိုးအမျိုးမျိုးကိုအသုံးပြုရန်ဆိုလိုသည်။
ဥပမာအားဖြင့်:
$data = [65, 66, 67];
$packed = pack("C*", ...$data);
echo $packed; // ထုတ်လုပ်ခြင်း ABC
ဤကုဒ်တွင် 66 နှင့် ကိုက်ညီ သော ASCII ဇာတ်ကောင် A နှင့်ကိုက်ညီပြီး 67 သည် C နှင့်ကိုက်ညီသည် ။
နံပါတ်များကို "C *" မှတဆင့် binary data များထဲသို့ binary data များထဲသို့ပြောင်းရန် ("C *") သို့ပြောင်းရန်အောက်ပါအတိုင်းဖြစ်သည် -
ဂဏန်းတန်ဖိုးများပါ 0 င်သောခင်းကျင်းမှုကိုပြင်ဆင်ပါ။ Array ရှိတန်ဖိုးများသည် 0 နှင့် 255 အကြားဖြစ်သင့်သည်။
parameter ကိုအသုံးပြုပြီး parameter ကို သုံး. (C * ") ကို အသုံးပြု. " C * ") ကို parameter တွေကို parameter များ ( C *" ) ကို pack လုပ်ရန် parameters များကို parray များစွာအဖြစ်ဖြတ်သန်းပါ။
Pack () နံပါတ်တစ်ခုစီကို byte တစ်ခုသို့ပြောင်းလဲပြီး binary string ကိုပြန်ပို့သည်။
နမူနာကုဒ်:
<?php
$array = [72, 101, 108, 108, 111]; // ကိုက် "Hello"
$binary = pack("C*", ...$array);
echo $binary; // ထုတ်လုပ်ခြင်း: Hello
?>
မှတ်ချက် - Pack () သည် binary string ကိုပြန်ပို့ပေးပြီး ပဲ့တင်သံကို တိုက်ရိုက် သုံး. ထုတ်လွှင့်မည်မဟုတ်ပါ။ ၎င်းကို visual way တစ်ခုဖြင့်ကြည့်လိုပါက Bin2Hex () function ကိုသုံးနိုင်သည်။
echo bin2hex($binary); // 48656c6c6f
အကယ်. Array သည်အချည်းနှီးဖြစ်လျှင်, ခေါ်ဆိုမှု အထုပ် ("C *", ... $ array) အမှားတစ်ခုသတင်းပို့လိမ့်မည်။ ၎င်းကို ဦး စွာစီရင်ရန်အကြံပြုသည် -
if (!empty($array)) {
$binary = pack("C*", ...$array);
} else {
$binary = '';
}
Pack ("C *") သည် element ကို 0 ~ 255 ၏ကိန်းဂဏန်းတစ်ခုဖြစ်ရန်လိုအပ်သည်။ မဟုတ်ရင်မမျှော်လင့်ဘဲရလဒ်များပေါ်ပေါက်လာလိမ့်မည်။ သင် scope ကိုကန့်သတ်ရန် array_map ကို သုံးနိုင်သည်။
$array = array_map(function($v) {
return $v & 0xFF; // အနိမ့်ဆုံးကိုသာသိမ်းထားပါ8မြင်းဇက်ကြိုး
}, $array);
ထုပ်ပိုးထားသောအချက်အလက်များကို Custom network protocols များတွင်မကြာခဏအသုံးပြုလေ့ရှိပြီးကိန်းဂဏန်းများကို byte stream များသို့ပြောင်းလဲပြီးဝေးလံသောဆာဗာများသို့ပို့နိုင်သည်။
ဥပမာ -
$data = [1, 2, 3, 4];
$packet = pack("C*", ...$data);
$socket = stream_socket_client("tcp://m66.net:1234");
fwrite($socket, $packet);
fclose($socket);
တစ်ခါတစ်ရံရုပ်ပုံခေါင်းစဉ်သတင်းအချက်အလက်, အသံနှင့်ဗွီဒီယိုဖိုင်များစသည့် binary format များကိုရေးရန်လိုအပ်သည်။
$header = [0x89, 0x50, 0x4E, 0x47]; // PNGဖိုင်လက်မှတ်
file_put_contents('file.png', pack("C*", ...$header));
ထုံးစံ protocol တစ်ခုသည်ကွက်လပ်များစွာပို့သောအခါနံပါတ်များကို byte streams သို့ပြောင်းရန်အလွန်များသောအားဖြင့်ဖြစ်သည်။
Pack (C * ") သည် byte Array ကိုကြိုးများအဖြစ်ပြောင်းလဲနိုင်သည် ။
Pack (C * ") ကို binary format ရှိ binary strings များထဲသို့ထည့်သွင်းရန်ကိန်းဂဏန်းများကိုထည့်သွင်းရန်အသုံးပြုသည်။
Array Element သည် 0 နှင့် 255 ကြားရှိရမည်။ အချည်းနှီးသောခင်းကျင်းမှုကိုပထမ ဦး စွာစစ်ဆေးသင့်သည်။
ကွန်ယက်ထုတ်လွှင့်ခြင်း, ဖိုင်အရေးအသားနှင့် protocol development ဖွံ့ဖြိုးတိုးတက်မှုစသည့်အခြေအနေအမျိုးမျိုးအတွက်သင့်တော်သည်။
၎င်းသည်နှစ်လမ်းသွားပြောင်းလဲခြင်းကိုအောင်မြင်ရန် (C * ") ကို အသုံးပြုသည်။
အထုပ် (C * ") ကို အသုံးပြုခြင်းအားဖြင့်သင်သည် Binary Data ကိုထိရောက်စွာလုပ်ဆောင်နိုင်ပြီး PHP ကိုအဆင့်နိမ့်ဒေတာအပြန်အလှန်အားဖြင့်ပိုမိုအစွမ်းထက်အောင်ပြုလုပ်နိုင်သည်။