လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP တွင် pack () function ကို အသုံးပြု. ကိန်းဂဏန်းများကို Binary String သို့ပြောင်းနည်း?

PHP တွင် pack () function ကို အသုံးပြု. ကိန်းဂဏန်းများကို Binary String သို့ပြောင်းနည်း?

M66 2025-06-15

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်တခါတရံတွင်ကျွန်ုပ်တို့သည်ကိန်းဂဏန်းများကိုဒေတာထုပ်ပိုးခြင်း, PHP ၏ built-in pack () function သည်ဤလုပ်ငန်းကိုပြီးမြောက်ရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် Pack () function ၏အခြေခံအသုံးပြုမှုကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ နိဒါန်း Pack () function ကို

Pack () function ကို function ကို binary strings များထဲသို့အချက်အလက်များကိုထုပ်ပိုးရန်အသုံးပြုသည်။

 string pack(string $format, mixed ...$values)
  • $ format - နောက်ဆက်တွဲ parameters တွေကိုထုပ်ပိုးကြောင်းညွှန်ပြ, format string ကို။

  • $ တန်ဖိုးများ - ထုပ်ပိုးခံရဖို့ဒေတာ။

Pack () သည် formatt ်အက်ခရာအမျိုးမျိုးကိုထောက်ပံ့သည်။ ဤဆောင်းပါးသည်ကိန်းဂဏန်းများကိုထုပ်ပိုးရန်အသုံးပြုသောသော့ချက်စာလုံးများစွာကိုဖော်ပြထားသည်။

2 ။ အများအားဖြင့်အသုံးပြုသော format ကိုအက္ခရာများ

ကိန်းဂဏန်းများနှင့်ဆက်ဆံရာတွင်ဤနေရာတွင်ဘုံ format ဇာတ်ကောင်များဖြစ်သည်။

  • C : လက်မှတ်မထိုးထားသောစာလုံးများ (1 byte, range 0-255)

  • n : လက်မှတ်မထိုးထားသောကိန်းတို (2 Bytes, Network Enterianness)

  • v : လက်မှတ်မထိုးထားသောကိန်းတို (2 byte အမိန့်)

  • N : လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်း (4 bytes, network endianness, big endianness)

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

  • J : IFFIGNED 64-bit Integer (PHP 5.6+ အထောက်အပံ့များ)

ဥပမာအားဖြင့်, ကိန်းဂဏန်း 1234 ကို 2-byte network endianness binary string ကိုပြောင်းပါ။

 $binary = pack("n", 1234);

3 ။ လက်တွေ့ကျသောလျှောက်လွှာဥပမာ

ဥပမာ 1: 32-bit လက်မှတ်မထိုးထားသောကိန်းဂဏန်းများထုပ်ပိုးခြင်း

4294967295 (I.E. ၏အများဆုံးတန်ဖိုး) ကို Connect to Network byte အမိန့်သို့ပြောင်းရန်ကျွန်ုပ်တို့ပြောင်းလဲလိုပါသည်။

 $int = 4294967295;
$binary = pack("N", $int);
echo bin2hex($binary); // ထုတ်လုပ်ခြင်း:ffffffff

ဥပမာ 2 - Binary files သို့စာရေးခြင်းကိုတုပပါ

အသုံးပြုသူ ID (4 bytes), အဆင့် (1 byte), အဆင့် (1 byte) ပါ 0 င်သည့် binary data file တစ်ခုကိုကျွန်ုပ်တို့တည်ဆောက်လိုကြောင်းဆိုပါစို့။

 $userId = 1001;
$level = 5;
$status = 1;

$data = pack("NCC", $userId, $level, $status);
file_put_contents("user_data.bin", $data);

ထုတ်ပေးသောဖိုင်တွင်သက်ရှိ 7-byte binary content များပါ 0 င်မည်ဖြစ်ပြီး embedded systems သို့မဟုတ် cross-platform data data လဲလှယ်ခြင်းအတွက်အကောင်းဆုံးဖြစ်သည်။

ဥပမာ 3. ကွန်ယက်ထုတ်လွှင့်မှုအတွက် packet တစ်ခုကိုတည်ဆောက်ခြင်း

ဥပမာအားဖြင့်, အကယ်. သင်သည်ဂိမ်းဆာဗာဆက်သွယ်ရေး protocol ကိုတီထွင်ပါက 0 န်ဆောင်မှုခံယူသူသည်ဒေတာ packets များကိုအောက်ပါဖွဲ့စည်းတည်ဆောက်ပုံနှင့်ပို့ရန်လိုအပ်သည်။

  • Baotou (2 bytes 0xabcd သို့ fixed)

  • ဒေတာအရှည် (2 bytes)

  • အသုံးပြုသူ ID (4 bytes)

  • တိုကင် string ကို (variable အရှည်)

သင်ဤကဲ့သို့သောတည်ဆောက်နိုင်:

 $header = 0xABCD;
$userId = 12345;
$token = "abc123token";
$length = 4 + strlen($token);

$packet = pack("nnN", $header, $length, $userId) . $token;

// ဆာဗာလိပ်စာသို့ပို့ပါ,ဥပမာအားဖြင့်:http://m66.net/api/receive_packet

ဆာဗာကိုလက်ခံပြီးနောက်၎င်းသည်ဒေတာများကိုပြန်လည်ရယူရန် () ဖြည်ချ နိုင်သည်။

4 ။ မှတ်စုများ

  1. Enterian ပြ problem နာ - ပလက်ဖောင်းများသို့မဟုတ်ကွန်ယက်များအကြားဆက်သွယ်သည့်အခါ,

  2. အမျိုးအစားကန့်သတ်ချက် - ကိန်းဂဏန်းများကိုသတ်မှတ်ထားသော format ဇာတ်ကောင်များ၏ခွင့်ပြုထားသောတန်ဖိုးများကိုသေချာစေပါ။

  3. Unpack () : pack (): pack () နှင့်ဖြည့်တင်းခြင်း () နှင့် ဖြည့်တင်းခြင်း () ကို အတွဲများဖြင့်အသုံးပြုသည်။ ၎င်းသည် encoding နှင့် decoding အတွက်အဆင်ပြေသည်။

V. နိဂုံးချုပ်

pack () function ကိုဖြင့် PHP ပရိုဂရမ်မာများသည်ကိန်းဂဏန်းများကိုအလွယ်တကူပြောင်းလဲနိုင်သည်။ ၎င်းသည်နောက်ခံ protocols များကိုကိုင်တွယ်ရာတွင်အထူးသဖြင့်ဖိုင်ပုံစံများကိုထုတ်လုပ်ခြင်းသို့မဟုတ် PHP စနစ်များနှင့်ဆက်သွယ်ခြင်းကိုပြုလုပ်ရာတွင်အထူးအရေးကြီးသည်။ Format Sities ကို အသုံးပြု. ကျွမ်းကျင်မှုသည် PHP ၏နောက်ခံအပြောင်းအလဲအတွက်ကျွမ်းကျင်မှုအတွက်အဓိကခြေလှမ်းဖြစ်သည်။