လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Binary Data ၏ Serialization ကိုအကောင်အထည်ဖော်ရန် Pack () ကိုသုံးပါ

Binary Data ၏ Serialization ကိုအကောင်အထည်ဖော်ရန် Pack () ကိုသုံးပါ

M66 2025-06-05

PHP တွင် POST () function ကိုသတ်မှတ်ထားသောပုံစံဖြင့် binary strings များထဲသို့ထည့်ရန်အသုံးပြုသည်။ ကွန်ယက်လွှဲပြောင်းသူများ, ဖိုင်အရေးအသားနှင့်အခြားအနိမ့်ဘာသာစကားများရှိသောဘာသာစကားရေးသားခြင်းနှင့်အပြန်အလှန်ဆက်သွယ်မှုများနှင့်ဆက်ဆံရာတွင်၎င်းသည်အသုံးဝင်သည်။ ဤဆောင်းပါးသည် Pack () function ကို အသုံးပြု. အသေးစိတ်အချက်အလက်များကိုအသေးစိတ်ရှင်းပြပြီးဒေတာကို Binary format နဲ့ဘယ်လိုထည့်သွင်းရမယ်ဆိုတာသရုပ်ဖော်ဖို့ဥပမာကိုပေါင်းစပ်ပါလိမ့်မယ်။

Pack () function နိဒါန်း

Pack of Pack () ၏ Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 string pack(string $format, mixed $values, mixed ...$values)
  • $ format - ဒေတာတစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသော format များတပ်ဆင်ထားသည့်အချက်အလက်များ၏ပုံစံကိုသတ်မှတ်သည်။

  • $ တန်ဖိုးများ - ထုပ်ပိုးရမည့်တန်ဖိုးသည် parametersk များစွာဖြစ်နိုင်သည်။

ပြန်လာတန်ဖိုးသည်သတ်မှတ်ထားသောပုံစံတွင်ထုပ်ပိုးထားသော binary string ကိုဖြစ်သည်။

ဘုံ format ကို codes တွေကို

ပုံစံကုဒ် ဖေါ်ပြ နမူနာ
တစ်စီး 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)

ဥပမာသုံးသပ်ခြင်း

1 ။ ထုပ်ပိုးကြိုးနှင့်ကိန်းဂဏန်းများ

 <?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 သို့ပြောင်းသည်။

2 ။ ကွန်ယက် protocol packages များကိုတည်ဆောက်ရန် Pack () ကိုသုံးပါ

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 ​​နေကြသည်။

3 ။ Pack () ကိုအသုံးပြုခြင်းဥပမာတစ်ခုစီကိုတစ် ဦး နှင့်တစ် ဦး ပြောင်းလဲရန်

 <?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 အစီအစဉ်နှင့်အချက်အလက်အမျိုးအစားကိုတိကျစွာထိန်းချုပ်နိုင်သည်။