我想打包一個由 64 位、32 位和 32 位整陣列成的字串。我對 pack 功能(或位)沒有太多經驗,所以我正在嘗試做這樣的事情:
pack('JNN', 1, 2, 3);
// and
unpack('JNN');
但這不會產生我想要的結果。
問題是,當我運行該代碼時,我收到以下資訊:
array [
"NN" => 1
]
但我預料到了這一點:
array [
1,
2,
3
]
知道如何解決這個問題嗎?
提前致謝,
uj5u.com熱心網友回復:
pack 創建一個 16 個字符的字串。
$str = pack('JNN', 1, 2, 3);
//string(16) "\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03"
unpack 需要格式元素的鍵。例子:
$arr = unpack('Jint64/N2int32_',$str);
/*
array (
'int64' => 1,
'int32_1' => 2,
'int32_2' => 3,
)
*/
有關更多示例,請參閱PHP 手冊中的解包。
如果需要純數字鍵,可以使用array_values函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/444750.html
