PHP ပရိုဂရမ်တွင် POSP () function ကို အသုံးပြု. သိုလှောင်ခြင်းသို့မဟုတ်ထုတ်လွှင့်ရန်အတွက်အချက်အလက်များကို binary strings များထဲသို့ထည့်ရန်အသုံးပြုသည်။ အထူးသဖြင့် binary protocols များနှင့်ဆက်ဆံရာတွင်ဖိုင်ပုံစံများသို့မဟုတ်ကွန်ယက်အချက်အလက်များ, pack ကိုအသုံးပြုခြင်းသည်အလွန်များသောအားဖြင့်ဖြစ်သည်။ ရလဒ်အချက်အလက်များကိုအတည်ပြုရန် Pack () function ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။
Pack () function ကို package package များသည် format string ကို အခြေခံ. Binary ကြိုးများထဲသို့ထည့်ပါ။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
$binaryString = pack(string $format, mixed $values, ...);
$ format - ဒေတာအမျိုးအစားနှင့်အမိန့်ကိုသတ်မှတ်ပေးသော format string ကို။
$ တန်ဖိုးများ - ထုပ်ပိုးခံရဖို့ဒေတာ။
ဘုံပုံစံသင်္ကေတများတွင်:
C : IFFIFTED ဇာတ်ကောင် (1 byte)
N : လက်မှတ်မထိုးထားသောကိန်းတို (16-bit, network endian, Big-endian)
N : လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်းဂဏန်း (32-bit, network endianness)
A : Nul ဖြည့် string ကို
A : အာကာသဖြည့် string ကို
ပိုမိုပုံစံချခြင်းဇာတ်ကောင်များအတွက် ကျေးဇူးပြု. တရားဝင်လက်စွဲစာအုပ် - https://m66.net/unet/function.pack.php
များသောအားဖြင့် CRC, MD5 ကဲ့သို့သောအချက်အလက်များကိုအတည်ပြုသည့်အခါ hash functions များသို့မဟုတ် checksum algorithms များကိုအသုံးပြုသောအခါအသုံးပြုသည်။ Pack () သည် format ကိုရှုပ်ထွေးစေရန်နှင့် binary structure သည်တသမတ်တည်းဖြစ်နေကြောင်းသေချာစေရန်,
Command Code (1 bit နံပါတ် 2 ခုနှင့် strings နှစ်ခု) ပါသည့် packets များကိုစစ်ဆေးရန်လိုသည်ဆိုပါစို့။
<?php
// ဒေတာကိုတုပ
$cmd = 0x01; // Command Code 1ဒရယ်
$num1 = 258; // 16ဂဏန်း,တန်ဖိုး258
$num2 = 65535; // 16ဂဏန်း,အများဆုံးတန်ဖိုး
$data = "hello"; // ကြိုး
// protocol ဖြင့် Package Data
$packedData = pack('CnnA5', $cmd, $num1, $num2, $data);
// checksum တွက်ချက်(ရိုးရှင်းသော Xor စိစစ်အတည်ပြု)
$checksum = 0;
for ($i = 0; $i < strlen($packedData); $i++) {
$checksum ^= ord($packedData[$i]);
}
// အထုပ် checksum
$packedChecksum = pack('C', $checksum);
// နောက်ဆုံး packet ကိုစလှေတျတျော(အချက်များ + စစ်ဆေးရေး)
$finalPacket = $packedData . $packedChecksum;
// ထုတ်လုပ်ခြင်း16进制ကြိုး查看
echo '最终အချက်များ包:' . strtoupper(bin2hex($finalPacket));
?>
command code (1 byte) ကို (1 byte), 16-bit undeger integer number နှစ်ခုနှင့်ပုံသေအရှည် 5-byte string ကို package လုပ်ရန် format format ကိုသုံးပါ ။
ဒေတာသမာဓိရှိစေရန်ရိုးရှင်းသော Xor checksum ကိုတွက်ချက်ပါ။
အဆိုပါ checksum 1 byte သို့ထုပ်ပိုးပြီးဒေတာကိုမှဖြည့်စွက်ထားသည်။
ဒေတာ packet ကို hexadecimal တွင်လွယ်ကူသော debugging အတွက် bin2hex () မှတဆင့်ပြသသည်။
Format နဲ့ကိုက်ညီမှု - Pack of Pack of Pack of Pack of of Protocol specification, အထူးသဖြင့် byte အမိန့် (By Byte အမိန့်) နှင့်တိတိကျကျကိုက်ညီရမည်။
string length : ဒေတာလျှံသို့မဟုတ်ခြင်းကိုရှောင်ရှားရန် string အရှည်ကိုသတ်မှတ်ရန် တစ် ဦး သို့မဟုတ် တစ် ဦး ကို သုံးပါ။
CheckSum algorithm ရွေးချယ်ခြင်း - ဥပမာအားဖြင့် Xor Verification ကိုအသုံးပြုရန်ရိုးရှင်းပါသည်, သို့သော်စင်စစ်အားဖြင့် CRC16, MD5 ကဲ့သို့သောပိုမိုရှုပ်ထွေးသော algorithms များကိုလည်းအသုံးပြုနိုင်သည်။
ဒေတာနယ်နိမိတ်ပြုပြင်ခြင်း - ထုပ်ပိုးခြင်းမပြုမီဒေတာအမျိုးအစားသည်မှန်ကန်ကြောင်းသေချာစေရန်နှင့်ခြွင်းချက်များဖြစ်ပေါ်နေသောအကွာအဝေးပြင်ပရှိအနုတ်လက်ခဏာနံပါတ်များသို့မဟုတ်တန်ဖိုးများကိုရှောင်ကြဉ်ပါ။
Debugging Skills : Binary packets တွေကို debugging လုပ်ဖို့ bin2hex () ကို သုံးပါ။
ဆက်သွယ်ရေး protocol : data packet ၏သမာဓိကိုစစ်ဆေးရန် Package Fields Format
ဖိုင်အမျိုးအစားကိုထုတ်ယူခြင်း - binary format format ဖွဲ့စည်းပုံကိုထုတ်လုပ်ရန်သို့မဟုတ်စစ်ဆေးပါ။
Hardware Interface - Hardware Devices နှင့် Interacting Pack () နှင့်အပြန်အလှန်ဆက်သွယ်သည့်အခါညွှန်ကြားချက်များနှင့်အချက်အလက်များကိုပေါင်းစပ်ရန်။
ဒေတာ encryption : encryption algorithm နှင့်အတူထုပ်ပိုးစာဝှက်သို့မဟုတ်လက်မှတ်ထိုး။
ဒေတာထုတ်လွှင့်မှုနှင့်စံသတ်မှတ်ခြင်းကိုတိုးတက်စေရန်ရလဒ်အချက်အလက်များကိုအတည်ပြုရန် Pack () function ကိုသုံးပါ။ အထက်ပါအချက်များနှင့်ဥပမာများကသင့်ကိုပိုမိုကောင်းမွန်သော နားလည်မှု နှင့် အသုံးပြု. ပိုမိုကောင်းမွန်သော PHP ကုဒ်များကိုပိုမိုနားလည်ရန်ကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။