လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> pack () floating point နံပါတ်များကိုအသုံးပြုရန်မှန်ကန်သောနည်းလမ်း

pack () floating point နံပါတ်များကိုအသုံးပြုရန်မှန်ကန်သောနည်းလမ်း

M66 2025-06-04

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

အထုပ် ၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 string pack(string $format, mixed ...$values)
  • $ format - နောက်ပိုင်းတွင်လွန်သောတန်ဖိုး၏ထုပ်ပိုးနည်းလမ်းကိုသတ်မှတ်သည့် packaging နည်းလမ်းကိုသတ်မှတ်သည့် format string ကို။

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

ဥပမာအားဖြင့်, Pack (C ', 65) သည် byte ကို ASCII တန်ဖိုး 65 (i.E. , ဇာတ်ကောင် က ) ဖြင့်ပြန်လည်ရောက်ရှိစေသည်။


2 ။ floating point နံပါတ် format ကိုပုံစံသင်္ကေတ

Floating Point နံပါတ်များအတွက် pack () သည် သော့ချက်ပုံစံနှစ်ခုကိုဖော်ပြထားသည်။

  • F : ဒေတာများကို 32-bit တစ်ခုတည်း - တိကျသောရေပေါ်အမှတ်နံပါတ် အဖြစ်ထုပ်ပိုးပါ။

  • D : ဒေတာများကို 64-bit double-double-tloustoating point နံပါတ် အဖြစ်ထုပ်ပိုးပါ။

သို့သော်ပြနာမှာ - endianness သည် မတူညီသောပလက်ဖောင်းများနှင့်ကွဲပြားနိုင်သည်။ Pack တွင် () သင် prefix မှ byte အမိန့်ကိုသတ်မှတ်နိုင်သည်။

  • F / D - အိမ်ရှင် Entianness ကိုသုံးပါ။

  • G : 32-bit floating point နံပါတ် (Intel Architecture နှင့်ဆင်တူ သည် )

  • G : 32-bit floating point နံပါတ်ကို Big Endian Byte အမိန့်ကို သုံး.

  • E : 64-bit floating point နံပါတ်, နည်းနည်း endian byte အမိန့်

  • E : 64-bit floating point နံပါတ်, Big-end-endian byte အမိန့်

မှတ်ချက် - G / G / E / E ကို PHP 7.0 ဖြင့်စတင်မိတ်ဆက်ခဲ့သည်။


3 ။ ဥပမာ - floating point နံပါတ်များကို binary strings ထဲသို့ထုပ်ပိုး

ကျွန်ုပ်တို့သည် floating point နံပါတ် 3.14 ကို packet teach truntry အတွက် binary stream များကို binary marams များပြုလုပ်ရန်လိုသည်ဟုဆိုပါစို့။

 <?php
$float = 3.14;
$binary = pack('G', $float); // ကြီးမားတဲ့ - အဆုံးအဖြစ်ထုပ်ပိုး32bit floating အမှတ်နံပါတ်
echo bin2hex($binary); // output hexadecimal ရလဒ်အမြင်
?>

output ကို (အလားတူ):

 4048f5c3

ဤတန်ဖိုးကို 3.14 သို့ပြန်သွားနိုင်သည်။


4 ။ ဖြည့်စွက်အတည်ပြုခြင်း

အထက်တွင်ထုပ်ပိုးထားသောတန်ဖိုးသည်မှန်ကန်ကြောင်းအတည်ပြုရန်ကျွန်ုပ်တို့သည် ဖြည့်တင်းခြင်း () ကို သုံးနိုင်သည်။

 <?php
$binary = pack('G', 3.14);
$result = unpack('Gfloat', $binary);
echo $result['float']; // ထုတ်လုပ်ခြင်း 3.14
?>

5 ။ လက်တွေ့ကျသောလျှောက်လွှာ - Floating Point နံပါတ်များကိုထုပ်ပိုးပြီးတင်ထားသည်

သင် API ကိုတည်ဆောက်နေခြင်းနှင့် ploating point နံပါတ်များကိုထုပ်ပိုးရန်နှင့် upload လုပ်ရန်လိုသည်ဆိုပါစို့။

 <?php
$data = [1.23, 4.56, 7.89];
$binary = '';
foreach ($data as $num) {
    $binary .= pack('G', $num); // Big Endian format
}

// ထုပ်ပိုးထားသောအချက်အလက်များကိုဆာဗာသို့တင်ပါ
$url = 'https://m66.net/upload-float-data';
$options = [
    'http' => [
        'method' => 'POST',
        'header' => "Content-Type: application/octet-stream\r\n",
        'content' => $binary,
    ],
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

6 ။ သိကောင်းစရာများ

  • အကယ်. သင့်တွင် floating point တိကျမှန်ကန်မှုအတွက်မြင့်မားသောလိုအပ်ချက်များရှိပါက D (64-bit နှစ်ဆ) ကိုသုံးပါ။

  • ပလက်ဖောင်းများအနှံ့ဆက်သွယ်သည့်အခါ Entianness ကိုစည်းလုံးညီညွတ်စေရန်လိုအပ်သည်။ G (32-bit big-endian) သို့မဟုတ် အီး (64-bit big-endian) ကိုအသုံးပြုရန်လိုအပ်သည်။

  • Bin2Hex () () သို့မဟုတ် ထုပ်ပိုး () ထုပ်ပိုး () ထုပ်ပိုး () ကိုသုံးပါ။

  • Enterianness ကိုအတိအလင်းမသိသော default f သို့မဟုတ် d ကို မသုံးပါနှင့်။