2010-08-23 60 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代替。不确定数据是打包成字节还是串行化成字符串对你来说很重要。