2013-05-28 47 views
0

我有16個字節,格式如下如何在PHP中以'SSSSLSS'的格式解壓數據?

short int, short int, short int, short int, unsigned int, short int, short int 
當我使用 unpack('SSSSLS', $data)

,它沒有回我想要的。 PHP嘗試使用某種格式的字符串作爲數組的鍵名,就像:

array(1) { 
    ["SSSLS"]=> 
    int(600) 
} 

任何方式產生的6位數字,只是與數量指數的陣列?

+0

包裝您的解包()在array_values(),所以'$ arrayArray ='array_values('unpack('SSSSLS',$ data));' –

+0

@MarkBaker解包('SSSSLS')不起作用,它只用一個像這樣的數組來保護數組:array(1){「 」 SSSLS「] => int(600) } –

+0

@MarkBaker我剛剛更新了我的問題 –

回答

3

這不是解壓縮的工作方式。這是正確的代碼:

array_values(unpack('S4l1/Ll2/S2l3', $data)); 

基本上你有/ s到劃分系列和您必須指定occourrence的數量,如果大於1也正是因爲需要一個名稱,而不PHP將覆蓋數組鍵。

拆包的結果實際上是:

Array 
(
    [l11] => short 1 
    [l12] => short 2 
    [l13] => short 3 
    [l14] => short 4 
    [l2] => int 
    [l31] => short 5 
    [l32] => short 6 
) 

如果您沒有使用的名稱將是:

Array 
(
    [1] => short 5 
    [2] => short 6 
    [3] => short 3 
    [4] => short 4 
) 
相關問題