首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP pack() 函式詳解:資料打包為二進位字串實戰範例

     編輯:PHP 相關知識

函式原型

pack(string $format, mixed ...$values): string

依 $format 指定格式,將多個引數打包成二進位字串。格式字元與 Perl pack 相容。

常用格式字元速查

字元說明備註
C無號字元 (unsigned char, 1 byte)0-255
n無號短整數 (大端序, 2 bytes)網路位元組序
N無號長整數 (大端序, 4 bytes)網路位元組序
v無號短整數 (小端序, 2 bytes)
V無號長整數 (小端序, 4 bytes)
a以 NUL 填充的字串
H十六進位字串 (高半位元組優先)

基本範例

<?php
// 將三個 ASCII 碼打包成字串 "PHP"
$binary = pack('C3', 80, 72, 80);
echo $binary; // 輸出: PHP
echo bin2hex($binary); // 輸出: 504850
?>

實戰:網路封包組裝

<?php
// 假設協定:版本(1 byte) + 指令(1 byte) + 長度(2 bytes, 大端序) + 資料
$version = 1;
$command = 0x05;
$data    = 'Hello';
$length  = strlen($data);

$packet = pack('CCn', $version, $command, $length) . $data;
// 送出 $packet 到 socket...
?>

對應解包:unpack()

<?php
$binary = pack('C3', 80, 72, 80);
$arr = unpack('C3chars', $binary);
print_r($arr);
// Array ( [chars1] => 80 [chars2] => 72 [chars3] => 80 )
?>

注意事項

  • PHP 字串即二進位安全,可直接儲存 pack 結果。
  • 處理網路協定、二進位檔案格式 (如 PNG、ZIP 標頭) 時極為實用。
  • 格式字元可重複:'C3' 等同 'CCC';'*' 表示用盡所有引數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved