PHP တွင် POST () function ကိုသတ်မှတ်ထားသောပုံစံဖြင့် binary strings များထဲသို့ထည့်ရန်အသုံးပြုသည်။ ကွန်ယက်လွှဲပြောင်းသူများ, ဖိုင်အရေးအသားနှင့်အခြားအနိမ့်ဘာသာစကားများရှိသောဘာသာစကားရေးသားခြင်းနှင့်အပြန်အလှန်ဆက်သွယ်မှုများနှင့်ဆက်ဆံရာတွင်၎င်းသည်အသုံးဝင်သည်။ ဤဆောင်းပါးသည် Pack () function ကို အသုံးပြု. အသေးစိတ်အချက်အလက်များကိုအသေးစိတ်ရှင်းပြပြီးဒေတာကို Binary format နဲ့ဘယ်လိုထည့်သွင်းရမယ်ဆိုတာသရုပ်ဖော်ဖို့ဥပမာကိုပေါင်းစပ်ပါလိမ့်မယ်။
Pack of Pack () ၏ Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
string pack(string $format, mixed $values, mixed ...$values)
$ format - ဒေတာတစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသော format များတပ်ဆင်ထားသည့်အချက်အလက်များ၏ပုံစံကိုသတ်မှတ်သည်။
$ တန်ဖိုးများ - ထုပ်ပိုးရမည့်တန်ဖိုးသည် parametersk များစွာဖြစ်နိုင်သည်။
ပြန်လာတန်ဖိုးသည်သတ်မှတ်ထားသောပုံစံတွင်ထုပ်ပိုးထားသော binary string ကိုဖြစ်သည်။
ပုံစံကုဒ် | ဖေါ်ပြ | နမူနာ |
---|---|---|
တစ်စီး | nul ဇာတ်ကောင်ဖြည့် string ကို | Pack (A4 ', ABC' ' |
တစ်စီး | အာကာသဖြည့် string ကို | Pack (A4 ', ABC' ' |
ဂ | လက်မှတ်ရေးထိုးထားသောအက္ခရာများ (1 byte) | Pack ('C', 65) |
ဂ | လက်မှတ်မထိုးထားသောစာလုံးများ (1 byte) | Pack ('C', 65) |
ပေ | လက်မှတ်ထိုးရန်ကိန်း (2 bytes) လက်မှတ်ထိုး | Pack ('S', 1234) |
ပေ | လက်မှတ်မထိုးထားသောတိုတောင်းသောကိန်း (2 bytes) | Pack ('S', 1234) |
ကျွန်တော် | လက်မှတ်ထိုးကိန်း (စက်စကားလုံးအရှည်) | ထုပ်ပိုး ('i', 123456) |
ကျွန်တော် | လက်မှတ်မထိုးထားသောကိန်း (စက်စကားလုံးအရှည်) | ထုပ်ပိုး ('i', 123456) |
ြဌ | Long Integer (4 bytes) လက်မှတ်ထိုး | Pack ('L', 123456) |
ြဌ | လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်း (4 bytes) | Pack ('L', 123456) |
ပေ | floating point နံပါတ် (4 bytes) | Pack ('F', 3.14) |
ှုှမည်သောဆေး | Double Precision Plowating Point နံပါတ် (8 bytes) | Pack ('D', 3.14) |
n | လက်မှတ်မထိုးထားသောကိန်းဂဏန်းများ (16-bit bitian endian endian) | ထုပ်ပိုး ('N', 1234) |
n | လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်း (32-bit big-endian endian) | ထုပ်ပိုး ('N', 1234) |
<?php
// တ ဦး တည်းအရှည်ထုပ်ပိုး4string နှင့်တ ဦး တည်း32bit offigned big endian ကိန်းဂဏန်း
$packed = pack('a4N', 'test', 123456789);
echo bin2hex($packed);
?>
ဒီမှာ 'A4' ဆိုသည်မှာအရှည် 4 string ကိုထုပ်ပိုးခြင်းကိုဆိုလိုသည်။ အပိုင်းမလုံလောက်မှုသည် nul အက္ခရာများနှင့်ပြည့်နှက်နေသည်။ 'n' ဆိုသည်မှာ 32-bit unsigned big-endian integer ကိုထုပ်ပိုးခြင်းဖြစ်သည်။ Bin2hex () သည် Binary Content ကိုလွယ်ကူစွာကြည့်ရှုရန် Hexadecimal သို့ပြောင်းသည်။
command type (1 byte) နှင့် data dial endian by endian) နှင့်ဒေတာခန္ဓာကိုယ်အပါအ 0 င်ရိုးရှင်းသောကွန်ယက် packet တစ်ခုတည်ဆောက်ရန်လိုအပ်သည်ဆိုပါစို့။
<?php
$command = 1; // Command အမျိုးအစား,1ဒရယ်
$data = "Hello, m66.net!"; // ဒေတာခန္ဓာကိုယ်
$length = strlen($data); // ဒေတာအရှည်
// 打包Command အမျိုးအစား和ဒေတာအရှည်
$header = pack('CN', $command, $length);
// ပြည့်စုံသောဒေတာ packets တွေကို splicing
$packet = $header . $data;
// output package ၏ hexadecimal ကိုယ်စားပြုမှု
echo bin2hex($packet);
?>
အထက်ဖော်ပြပါကုဒ်နံပါတ်တွင် 'C' package command type (1 byte untigned integer) နှင့် 'N' package data data data data data ender) ။ ဒေတာအလောင်းများကိုဖြစ်သကဲ့သို့ spliced နေကြသည်။
<?php
$number = 65535;
$packed = pack('n', $number); // 按大端ဒရယ်序打包为16လက်မှတ်မထိုး integer
echo 'Packed data: ' . bin2hex($packed) . PHP_EOL;
$unpacked = unpack('nvalue', $packed); // ဘော့ပီတာပိတ်ဆို့ခြင်း
echo 'Unpacked value: ' . $unpacked['value'] . PHP_EOL;
?>
Pack () သည် Binary Data ကိုကိုင်တွယ်ရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ Format Code ကို အသုံးပြု. ကျွမ်းကျင်မှုဖြင့်ပြုလုပ်ထားသော byte အစီအစဉ်နှင့်အချက်အလက်အမျိုးအစားကိုတိကျစွာထိန်းချုပ်နိုင်သည်။