0

我有这个 python 脚本

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 警告:pack(): Type n: too little arguments in .../application/extensions/Zend-extensions/NMS/Bts.php:150

非常感谢您的帮助。

4

1 回答 1

0

你的参数字符串都搞砸了。您在一些地方表明您将通过 2、5、3 和 13 条短裤,但每次只提供一条。您表明您将提供一系列字符,但随后您提供了一个NUL终止的字符串。您表明您将提供一个 unsigned char 但不提供。请尝试使用此格式字符串:

'nlna*na*na*na*i3ni6'

另一种选择是使用serializeanddeserialize代替。不确定将数据打包成字节或序列化成字符串对您是否重要。

于 2010-08-23T08:29:01.413 回答