လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Pack () format identifiers နှင့်အတူ binary ဒေတာတည်ဆောက်ပုံကို dynamically ထုတ်ပေး

Pack () format identifiers နှင့်အတူ binary ဒေတာတည်ဆောက်ပုံကို dynamically ထုတ်ပေး

M66 2025-05-29

PHP တွင် POST () function သည်အချက်အလက်များကိုသတ်မှတ်ထားသော format identifier ပေါ် မူတည်. Binary ကြိုးများအဖြစ်ပြောင်းလဲစေသောအလွန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်ထုံးစံ binary data structures များ, protocol packages များ, ဖိုင်ခေါင်းစဉ်များသို့မဟုတ်အခြားအနိမ့်အဆင့်အချက်အလက်အပြောင်းအလဲများထုတ်လုပ်ရန်အတွက်အသုံးဝင်သည်။

ဤဆောင်းပါးသည်ရှုပ်ထွေးသော binary data structures များပြုလုပ်ရန် format identifiers များနှင့်ပေါင်းစပ်ထားသော Pack () function ကိုအသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။

1 ။ အခြေခံ အထုပ် () function ကိုမိတ်ဆက်

Pack () ၏ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 string pack ( string $format , mixed $args [, mixed $... ] )
  • $ format - အချက်အလက်များကိုမည်သို့ပြောင်းလဲရမည်ကိုသတ်မှတ်ခြင်း, format string ကို။

  • $ args : ပြောင်းလဲခံရဖို့ဒေတာ။

format string သည် format identifiers များပါ 0 င်သည်။ တစ်ခုချင်းစီသည်ဒေတာအမျိုးအစားကိုကိုယ်စားပြုသည်။ ဥပမာအားဖြင့်:

  • C : IFFIFTED ဇာတ်ကောင် (1 byte)

  • N : IFFIGNED တိုတောင်းသောကိန်း (2 BYTES, ကြီးမားသော endian)

  • v : လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်း (4 bytes 4 bytes)

  • A : Nul ဖြည့် string ကို

  • A : အာကာသဖြည့် string ကို

2 ။ format identifiers နှင့်အတူ binary ဒေတာကိုထုတ်လုပ်ပါ

ကျွန်ုပ်တို့သည်ရိုးရှင်းသော binary data struction ကိုအောက်ပါနယ်ပယ်များဖြင့်ထုတ်လုပ်လိုသည်ဆိုပါစို့။

  1. ဗားရှင်းနံပါတ်: 1 byte offigned integer

  2. Flag Bits: 2-byte လက်မှတ်မထိုးထားသောကိန်း (Big-endian)

  3. Timestamp: 4-byte လက်မှတ်မထိုးထားသောကိန်းဂဏန်းများ (Little Endian)

  4. Fixed အရှည် string ကို: 10 bytes, အာကာသ padding

သက်ဆိုင်ရာ format string ကို -

 $format = 'C n V A10';

နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 <?php
$version = 1;                 // 1ဒရယ်
$flags = 512;                 // 2ဒရယ်大端序
$timestamp = time();          // 4ဒရယ်小端序
$name = "example";

$binaryData = pack('C n V A10', $version, $flags, $timestamp, $name);

echo bin2hex($binaryData);
?>

ဤဥပမာတွင် Pack () function သည်ဤ variable များကိုကွန်ယက်ထုတ်လွှင့်ခြင်းသို့မဟုတ်ဖိုင်အရေးအသားအတွက်လွယ်ကူစွာအသုံးပြုရန်အတွက် binary string ကိုပြောင်းလဲပေးသည်။

3 ။ dynamically strings strings and data တွေကိုထုတ်ပေးသည်

တခါတရံတွင်ကျွန်ုပ်တို့သည် format strings strings နှင့် input အပေါ်အခြေခံပြီးသက်ဆိုင်ရာအချက်အလက်များ arrays များကိုပုံမှန်ထုတ်လုပ်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့်:

 <?php
$fields = [
    ['type' => 'C', 'value' => 255],
    ['type' => 'n', 'value' => 1024],
    ['type' => 'a5', 'value' => 'abc'],
];

// dynamicy strings strings နှင့် parameters တွေကိုထုတ်ပေး
$format = '';
$args = [];

foreach ($fields as $field) {
    $format .= $field['type'] . ' ';
    $args[] = $field['value'];
}

// ပိုလျှံနေရာများကိုဖယ်ရှားပါ
$format = trim($format);

$binaryData = pack($format, ...$args);

echo bin2hex($binaryData);
?>

ဤနည်းအားဖြင့် Code သည်ကွင်းဆင်းအမျိုးအစားများနှင့်အရှည်များစွာကိုထောက်ပံ့သည်။

4 ။ အများအားဖြင့်အသုံးပြုသော formated identifiers ၏အကျဉ်းချုပ်

အမှတ်မရိုက် ဥပမာပြပါ bytes အရေအတွက် ဥပမာတန်ဖိုး (ဒ decimal မ) ပေြာဆို
လက်မှတ်မထိုးဇာတ်ကောင် 1 255
လက်မှတ်ရေးထိုးခဲ့ဇာတ်ကောင် 1 -128 ~ 127
n လက်မှတ်မထိုးထားသောကိန်းဂဏန်းများ (Big-endian) 2 1024 ကွန်ယက် byte အမိန့်
v INFIFTED တိုတောင်းသော integer (Little endian) 2 1024 Little က endian byte အမိန့်
n လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်း (Big-Endian) 4 65536 ကွန်ယက် byte အမိန့်
v လက်မှတ်မထားသောရှည်လျားသောကိန်း (Little endian) 4 65536 Little က endian byte အမိန့်
တစ်စီး nul ဖြည့် string ကို n "ABC" fixed အရှည် string ကို
တစ်စီး အာကာသဖြည့် string ကို n "ABC" fixed အရှည် string ကို

5 ။ URL ဥပမာများကိုပေါင်းစပ်ခြင်း

အမှန်တကယ်စီမံကိန်းများတွင်ထုတ်လုပ်ထားသော Binary Data တွင် URLs များပါ 0 င်နိုင်သည်။ ဥပမာအားဖြင့်:

 <?php
$url = "https://m66.net/api/data";  // Domain Name ကိုသာသုံးပါm66.netအမှန်တကယ်အစားထိုးURL

// သဘောတူညီချက်အတွက်ဖြစ်ပါတယ်ယူဆ,URLပုံသေအရှည်၏လယ်ကွင်း 30 ဒရယ်,အာကာသဖြည့်
$binaryData = pack('A30', $url);

echo bin2hex($binaryData);
?>

ဤတွင် URL သည်ထုတ်လုပ်ထားသော Binary Data တွင် 30 bytes 30 ကိုသိမ်းပိုက်ထားပြီးအစိတ်အပိုင်းမလုံလောက်မှုသည်နေရာများနှင့်ပြည့်နှက်နေသည်။

6 ။ အကျဉ်းချုပ်

Pack () function သည် PHP အချက်အလက်များကို binary format များသို့ပြောင်းလဲရန်ပြောင်းလွယ်ပြင်လွယ်။ ထိရောက်သောနည်းလမ်းဖြစ်သည်။ format identifiers များကိုပေါင်းစပ်ခြင်းအားဖြင့်ရှုပ်ထွေးသော binary data အဆောက်အအုံများကိုကွန်ယက်ပရိုတိုကောများ, ဖိုင်ပုံစံများနှင့်ကိရိယာဆက်သွယ်ရေးကဲ့သို့သောအခြေအနေအမျိုးမျိုး၏လိုအပ်ချက်များကိုဖြည့်ဆည်းရန်ပုံမှန်တည်ဆောက်နိုင်သည်။

Mastering Pack () နှင့်၎င်း၏ format identifier သည် Advanced Php ပရိုဂရမ်တွင်မရှိမဖြစ်လိုအပ်သောကျွမ်းကျင်မှုတစ်ခုဖြစ်သည်။