2010-08-23 58 views
0

我有這樣的Python腳本轉換蟒蛇包到PHP包

b_string = pack('>hqh2sh13sh5sh3sBiiihiiiiii', 
       21, 0, 
       len(country), country, 
       len(device), device, 
       len('1.3.1'), "1.3.1", 
       len('Web'), "Web", 
       27, 0, 0, 
       3, 0, cid, lac, 
       0, 0, 0, 0) 

,我想將其轉換爲PHP的,這是我這麼遠來到

$body= pack('nln2c*n13c*n5c*n3c*Ciiiniiiiii', 
        21, 0, 
        strlen($this->_mccToCountry[$this->_mcc]), $this->_mccToCountry[$this->_mcc], 
        strlen($this->_device), $this->_device, 
        strlen('1.3.1'), "1.3.1", 
        strlen('Web'), "Web", 
        27, 0, 0, 
        3, 0, $this->_cellId, $this->_lac, 
        0, 0, 0, 0); 

的變量是一樣的那些python腳本,但我得到這個錯誤

PHP的警告:包():N型:太少參數在... /應用/擴展/ Zend公司的擴展/ NMS/Bts.php:150

幫助將非常感激。

+0

你不打算使用第一個參數作爲代碼類型,如'n'爲16位未分配。 – RobertPitt 2010-08-23 08:13:31

回答

0

你的參數字符串全部搞砸了。您在某些地方表明您將通過2次,5次,3次和13次短褲,但每次只能提供一次。您表明您將提供一系列字符,但是您提供了一個NUL已終止的字符串。您指出您將提供一個無符號字符,但不提供一個。試試這個格式的字符串,而不是:

'nlna*na*na*na*i3ni6' 

另一種選擇是使用serializedeserialize代替。不確定數據是打包成字節還是串行化成字符串對你來說很重要。