توابع unpack() در PHP

تعریف و نحوه‌ی استفاده

توابع unpack() داده‌ها را از رشته‌های باینری آزاد می‌کند.

نحوه‌ی استفاده

unpack(format,data)
پارامتر توضیح
format ضروری. تعیین فرمتی که برای آزادسازی داده‌ها از بسته‌بندی استفاده می‌شود.
data اختیاری. تعیین داده‌های باینری که باید از بسته‌بندی آزاد شوند.

ممکنه‌های پارامتر format:

  • a - رشته پر شده با NUL
  • A - رشته پر شده با SPACE
  • h - رشته هگزادسیمال، نیمه پایینی اول
  • H - رشته هگزادسیمال، نیمه بالایی اول
  • c - signed char
  • C - unsigned char
  • s - signed short (همیشه 16 بیتی، ترتیب بایتی ماشین)
  • S - unsigned short (همیشه 16 بیتی، ترتیب بایتی ماشین)
  • n - unsigned short (همیشه 16 بیتی، ترتیب بایتی بزرگ)
  • v - unsigned short (همیشه 16 بیتی، ترتیب بایتی کوچک)
  • i - signed integer (اندازه و ترتیب بایتی وابسته به ماشین)
  • I - unsigned integer (اندازه و ترتیب بایتی وابسته به ماشین)
  • l - signed long (همیشه 32 بیتی، ترتیب بایتی ماشین)
  • L - unsigned long (همیشه 32 بیتی، ترتیب بایتی ماشین)
  • N - unsigned long (always 32 bit, big endian byte order)
  • V - unsigned long (always 32 bit, little endian byte order)
  • f - float (machine dependent size and representation)
  • d - double (machine dependent size and representation)
  • x - NUL byte
  • X - Back up one byte
  • @ - NUL-fill to absolute position

实例

例子1

<?php
$data = "PHP";
print_r(unpack("C*",$data));
?>

输出:

Array
(
[1] => 80
[2] => 72
[3] => 80
)

例子2

<?php
$data = "PHP";
print_r(unpack("C*myint",$data));
?>

输出:

Array
(
[myint1] => 80
[myint2] => 72
[myint3] => 80
)

例子3

<?php
$bin = pack("c2n2",0x1234,0x5678,65,66);
print_r(unpack("c2chars/n2int",$bin));
?>

输出:

Array
(
[chars1] => 52
[chars2] => 120
[int1] => 65
[int2] => 66
)