Tutorials References Menu

PHP Tutorial

PHP HOME PHP Intro PHP Install PHP Syntax PHP Comments PHP Variables PHP Echo / Print PHP Data Types PHP Strings PHP Numbers PHP Math PHP Constants PHP Operators PHP If...Else...Elseif PHP Switch PHP Loops PHP Functions PHP Arrays PHP Superglobals PHP RegEx

PHP Forms

PHP Form Handling PHP Form Validation PHP Form Required PHP Form URL/E-mail PHP Form Complete

PHP Advanced

PHP Date and Time PHP Include PHP File Handling PHP File Open/Read PHP File Create/Write PHP File Upload PHP Cookies PHP Sessions PHP Filters PHP Filters Advanced PHP Callback Functions PHP JSON PHP Exceptions

PHP OOP

PHP What is OOP PHP Classes/Objects PHP Constructor PHP Destructor PHP Access Modifiers PHP Inheritance PHP Constants PHP Abstract Classes PHP Interfaces PHP Traits PHP Static Methods PHP Static Properties PHP Namespaces PHP Iterables

MySQL Database

MySQL Database MySQL Connect MySQL Create DB MySQL Create Table MySQL Insert Data MySQL Get Last ID MySQL Insert Multiple MySQL Prepared MySQL Select Data MySQL Where MySQL Order By MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP XML

PHP XML Parsers PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Intro AJAX PHP AJAX Database AJAX XML AJAX Live Search AJAX Poll

PHP Examples

PHP Examples PHP Compiler

PHP Reference

PHP Overview PHP Array PHP Calendar PHP Date PHP Directory PHP Error PHP Exception PHP Filesystem PHP Filter PHP FTP PHP JSON PHP Keywords PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP Network PHP Output Control PHP RegEx PHP SimpleXML PHP Stream PHP String PHP Variable Handling PHP XML Parser PHP Zip PHP Timezones

PHP unpack() Function

❮ PHP Misc Reference

Example

Unpack data from a binary string:

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

Definition and Usage

The unpack() function unpacks data from a binary string.


Syntax

unpack(format,data)

Parameter Values

Parameter Description
format Required. Specifies the format to use when unpacking data.

Possible values:

  • a - NUL-padded string
  • A - SPACE-padded string
  • h - Hex string, low nibble first
  • H - Hex string, high nibble first
  • c - signed char
  • C - unsigned char
  • s - signed short (always 16 bit, machine byte order)
  • S - unsigned short (always 16 bit, machine byte order)
  • n - unsigned short (always 16 bit, big endian byte order)
  • v - unsigned short (always 16 bit, little endian byte order)
  • i - signed integer (machine dependent size and byte order)
  • I - unsigned integer (machine dependent size and byte order)
  • l - signed long (always 32 bit, machine byte order)
  • L - unsigned long (always 32 bit, machine byte order)
  • N - unsigned long (always 32 bit, big endian byte order)
  • V - unsigned long (always 32 bit, little endian byte order)
  • q - signed long long (always 64 bit, machine byte order)
  • Q - unsigned long long (always 64 bit, machine byte order)
  • J - unsigned long long (always 64 bit, big endian byte order)
  • P - unsigned long long (always 64 bit, little endian byte order)
  • f - float (machine dependent size and representation)
  • g - float (machine dependent size, little endian byte order)
  • G - float (machine dependent size, big endian byte order)
  • d - double (machine dependent size and representation)
  • e - double (machine dependent size, little endian byte order)
  • E - double (machine dependent size, big endian byte order)
  • x - NUL byte
  • X - Back up one byte
  • Z - NUL-padded string
  • @ - NUL-fill to absolute
data Required. Specifies the binary data to be unpacked
offset Optional. Specifies where to start unpacking from. Default is 0.


Technical Details

Return Value: Returns an array on success, or FALSE on failure.
PHP Version: 4+
Changelog: PHP 7.2 - float and double now supports both big and small endian.
PHP 7.1 - Added the optional offset parameter.
PHP 5.5.0 - The following changes were made for Perl compatibility: The "a" code now retains trailing NULL bytes.
The "A" code now strips all trailing ASCII whitespace.
The "Z" code was added for NULL-padded strings, and removes trailing NULL bytes.

More Examples

Example

Unpack data:

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

Example

Unpack data:

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

❮ PHP Misc Reference