我有这个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():输入n:... / application / extensions / Zend-extensions / NMS / Bts.php中的参数太少:
非常感谢帮助。
答案 0 :(得分:0)
您的参数字符串全部搞砸了。你指出你要通过2,5,3和13短裤的地方,但每次只提供一个。您表明您将提供一系列字符,但随后您提供了一个NUL
终止字符串。您表明您将提供未签名的字符,但不提供。请尝试使用此格式字符串:
'nlna*na*na*na*i3ni6'
另一种选择是使用serialize
和deserialize
代替。不确定数据是否打包成字节或序列化为字符串对你来说是否重要。