အထုပ် ၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
string pack(string $format, mixed ...$values)
$ format - နောက်ပိုင်းတွင်လွန်သောတန်ဖိုး၏ထုပ်ပိုးနည်းလမ်းကိုသတ်မှတ်သည့် packaging နည်းလမ်းကိုသတ်မှတ်သည့် format string ကို။
$ တန်ဖိုးများ - ထုပ်ပိုးခံရဖို့ဒေတာစာရင်း။
ဥပမာအားဖြင့်, Pack (C ', 65) သည် byte ကို ASCII တန်ဖိုး 65 (i.E. , ဇာတ်ကောင် က ) ဖြင့်ပြန်လည်ရောက်ရှိစေသည်။
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 ဖြင့်စတင်မိတ်ဆက်ခဲ့သည်။
ကျွန်ုပ်တို့သည် 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 သို့ပြန်သွားနိုင်သည်။
အထက်တွင်ထုပ်ပိုးထားသောတန်ဖိုးသည်မှန်ကန်ကြောင်းအတည်ပြုရန်ကျွန်ုပ်တို့သည် ဖြည့်တင်းခြင်း () ကို သုံးနိုင်သည်။
<?php
$binary = pack('G', 3.14);
$result = unpack('Gfloat', $binary);
echo $result['float']; // ထုတ်လုပ်ခြင်း 3.14
?>
သင် 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);
အကယ်. သင့်တွင် floating point တိကျမှန်ကန်မှုအတွက်မြင့်မားသောလိုအပ်ချက်များရှိပါက D (64-bit နှစ်ဆ) ကိုသုံးပါ။
ပလက်ဖောင်းများအနှံ့ဆက်သွယ်သည့်အခါ Entianness ကိုစည်းလုံးညီညွတ်စေရန်လိုအပ်သည်။ G (32-bit big-endian) သို့မဟုတ် အီး (64-bit big-endian) ကိုအသုံးပြုရန်လိုအပ်သည်။
Bin2Hex () () သို့မဟုတ် ထုပ်ပိုး () ထုပ်ပိုး () ထုပ်ပိုး () ကိုသုံးပါ။
Enterianness ကိုအတိအလင်းမသိသော default f သို့မဟုတ် d ကို မသုံးပါနှင့်။