PHP တွင် PHP တွင်အချက်အလက်များကိုသတ်မှတ်ထားသောပုံစံဖြင့် binary strings များထဲသို့အချက်အလက်များကိုထည့် သွင်း ရန်အသုံးပြုသည် ။ pack မှ ထုပ်ပိုးထားသော Binary data များကိုပိုမိုနားလည်သဘောပေါက်ရန်နှင့် debug လုပ်ခြင်းစသည့်အခြေအနေများတွင်အသုံးပြုသည်။
ဤဆောင်းပါးသည် PHP တွင်ရိုးရှင်းသော Hexdump () function ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုမိတ်ဆက်ပေးပြီးထုပ်ပိုးထားသော binary content ကိုကြည့်ရှုရန် Pack () function ကိုအသုံးပြုသည်။
အထုပ် ၏ syntax သည် -
string pack(string $format, mixed ...$values)
$ format သည် traging format ကိုသတ်မှတ်သည်။ ဥပမာ အား ဖြင့်လက်မှတ်မထိုးထားသောဇာတ်ကောင်များ (1 byte) ဟုဆိုလိုသည် ။
$ တန်ဖိုးများကို ထုပ်ပိုးခံရဖို့တန်ဖိုးများစာရင်းဖြစ်ပါတယ်။
ဥပမာအားဖြင့်:
$bin = pack('Cnv', 0x12, 0x3456, 0x789a);
ဤဖော်ပြချက်သည် Binary string ကိုထုတ်ပေးသည်။
1 byte: 0x12
2 bytes (Network Sequence, Big-endian): 0x3456
2 bytes (Little-endian, Little-endian): 0x789A
ဒီနေရာမှာ bytes မှာ hexadecimal ကိုယ်စားပြုမှုမှာ Bytes အတွက် binaradecimal ကိုယ်စားပြုမှုအတွက် binary string ကိုထုတ်ပေးသောရိုးရှင်းသော hexdump () function ကိုဖြစ်ပါတယ်။
function hexdump(string $data): void {
$len = strlen($data);
$offset = 0;
while ($offset < $len) {
// လိုင်းတစ်ခုအတွက်ပြပါ16ဒရယ်
$chunk = substr($data, $offset, 16);
$hex = '';
$ascii = '';
for ($i = 0; $i < strlen($chunk); $i++) {
$byte = ord($chunk[$i]);
$hex .= sprintf("%02X ", $byte);
// မူရင်းစာလုံးများကိုပြသရန်ပုံနှိပ်နိုင်သောစာလုံးများ,ဒီလိုမှမဟုတ်ရင် Dot နံပါတ်ကိုပြလိမ့်မည်
$ascii .= ($byte >= 32 && $byte <= 126) ? $chunk[$i] : '.';
}
// ချို့ယွင်းချက်များအတွက်တက်ပါစေ16ဒရယ်时的空格
$hex = str_pad($hex, 16 * 3);
// output ကိုပုံစံ:address ကို offset + hexadecimal + ASCII
printf("%08X %s %s\n", $offset, $hex, $ascii);
$offset += 16;
}
}
ဒေတာအနည်းငယ်ကိုထည့်သွင်းရန်နှင့်၎င်းကို HexDump ဖြင့်ကြည့်ရှုရန် Pack () function ကိုအသုံးပြုလိုကြောင်းဆိုပါစို့။
<?php
// ထုပ်ပိုးဒေတာ:1ဒရယ်无符号字符,2ဒရယ်网络序,4ဒရယ်小端序
$binary = pack('C n V', 0x41, 0x4243, 0x44454647);
hexdump($binary);
?>
ကွပ်မျက်ပြီးနောက်, output ကိုအောက်ပါအတိုင်းဖြစ်သည် -
00000000 41 42 43 47 46 45 44 00 00 00 00 00 00 00 00 00 ABCGFED..........
ခွဲခြမ်းစိတ်ဖြာခြင်း
0x41 သည် 'a' ဇာတ်ကောင်ဖြစ်သည်။
0x4243 ကို Network byte အမှာစာတွင် 42 43 ခု အဖြစ်သိမ်းဆည်းထားသည်။
0x44454647 ကို အသေးစားအမိန့်တွင် 47 46 45 44 တွင် 47 45 45 44 တွင်သိမ်းဆည်းထားသည်။
အထုပ်၏ format string () function ကို function ကိုအလွန်အစွမ်းထက်သည်။ အသေးစိတ်အတွက် M66.Net/manual/enual/en/function.pack.Pack.pack.Pack.Pack.Pack.Pack.Pack.Pack.Pack.php စသည့်တရားဝင်စာရွက်စာတမ်းများကိုဖတ်ရှုပါ။
HexDump () ကိုအကောင်အထည်ဖော်မှုကိုလိုအပ်ချက်များနှင့်အညီချိန်ညှိနိုင်သည်။
binary data များရှိပုံနှိပ်ထုတ်ဝေနိုင်သောစာလုံးများကိုအလိုအလျောက်နားလည်နိုင်။ မရရှိနိုင်ပါ။ HexDump () Debugging ကိုလွယ်ကူချောမွေ့စေရန်အသုံးပြုနိုင်သည်။
အထက်ပါနည်းလမ်းများမှတစ်ဆင့် developer များက binary storbu () binary structure () ကိုဖြည့်ဆည်းခြင်းနှင့်ဒေတာပုံစံကိုနားလည်ရန်ကူညီသည်။ ဤဆောင်းပါးသည် Hexdump () နှင့် Pack () နှင့်စတင်အသုံးပြုမှုဖြင့်လျင်မြန်စွာစတင်ရန်သင်မြန်မြန်ဆန်ဆန်ကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။