بازکردن بسته های باینری (unpack)
تابع unpack داده باینری را می شکند و قابل خواندن می کند. «باینری (Binary)» یعنی همان بیت ها. مثل بازکردن بسته پستی و دیدن اقلام داخل.
تعریف، کاربرد، و ایده کلی
unpack(format, data) رشته باینری را طبق «قالب (Format)» می خواند. خروجی یک آرایه است. هر حرف قالب، نوع داده را مشخص می کند.
مثال پایه: تبدیل حروف به کُد
<?php
$data = "PHP";
print_r(unpack("C*", $data));
?>
سینتکس و پارامترها
سینتکس: unpack(format, data, offset=0). format الگوی خواندن است. data رشته باینری است. offset نقطه شروع است.
نمونه نام گذاری خروجی
می توان به خروجی نام داد. این کار خوانایی را بهتر می کند.
<?php
$data = "PHP";
print_r(unpack("C*myint", $data));
?>
مثال ترکیبی با pack و اندین
«اندین (Endian)» ترتیب بایت هاست. n یعنی big-endian و v یعنی little-endian.
<?php
$bin = pack("c2n2", 0x1234, 0x5678, 65, 66);
print_r(unpack("c2chars/n2int", $bin));
?>
راهنمای سریع قالب ها
نمونه های رایج: C بایت بدون علامت، c بایت با علامت، n عدد 16بیتی big-endian، v عدد 16بیتی little-endian، N/V 32بیتی، a/A/Z رشته های padding شده.
نکته: برای ساخت داده تست، صفحه بازکردن بسته های باینری و همچنین شناسه یکتا را ببین تا نمونه ها را مرتب نام گذاری کنی.
گام های عملی
- نوع داده را مشخص کن.
- حرف قالب مناسب را انتخاب کن.
- در صورت نیاز نام خروجی بده.
- با
offsetاز جای درست شروع کن.
هشدار: قالب نادرست، خروجی اشتباه می دهد. اندین را دقیق انتخاب کن.
جمع بندی سریع
- خروجی
unpackهمیشه آرایه است. - قالب، معنی بایت ها را تعیین می کند.
- اندین روی اعداد چندبایتی مهم است.
offsetخواندن جزئی را ممکن می کند.