လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> hexdump ကိုအသုံးပြုနည်း () အထုပ် () function ကိုပြီးနောက် binary ဖွဲ့စည်းပုံကိုကြည့်ရှုရန်?

hexdump ကိုအသုံးပြုနည်း () အထုပ် () function ကိုပြီးနောက် binary ဖွဲ့စည်းပုံကိုကြည့်ရှုရန်?

M66 2025-06-12

PHP တွင် PHP တွင်အချက်အလက်များကိုသတ်မှတ်ထားသောပုံစံဖြင့် binary strings များထဲသို့အချက်အလက်များကိုထည့် သွင်း ရန်အသုံးပြုသည် ။ pack မှ ထုပ်ပိုးထားသော Binary data များကိုပိုမိုနားလည်သဘောပေါက်ရန်နှင့် debug လုပ်ခြင်းစသည့်အခြေအနေများတွင်အသုံးပြုသည်။

ဤဆောင်းပါးသည် PHP တွင်ရိုးရှင်းသော Hexdump () function ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုမိတ်ဆက်ပေးပြီးထုပ်ပိုးထားသော binary content ကိုကြည့်ရှုရန် Pack () function ကိုအသုံးပြုသည်။


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


hexdump () function ကိုစိတ်ကြိုက်

ဒီနေရာမှာ 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;
    }
}

ဥပမာ - Pack ၏ရလဒ်များကိုကြည့်ရှုရန် HexDump () ကိုသုံးပါ။

ဒေတာအနည်းငယ်ကိုထည့်သွင်းရန်နှင့်၎င်းကို 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 () နှင့်စတင်အသုံးပြုမှုဖြင့်လျင်မြန်စွာစတင်ရန်သင်မြန်မြန်ဆန်ဆန်ကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။