将Python包转换为PHP包

0 投票
1 回答
544 浏览
提问于 2025-04-16 03:10

我有一个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:150

非常感谢你的帮助。

1 个回答

0

你的参数字符串搞得一团糟。你在某些地方说要传递2、5、3和13个短整型数据,但每次只提供了一个。你还说要提供一系列字符,但实际上你提供的是一个以NUL结尾的字符串。你表示要提供一个无符号字符,但实际上并没有提供。试试这个格式字符串:

'nlna*na*na*na*i3ni6'

另外一个选择是使用serializedeserialize。我不确定你是否在意数据是打包成字节还是序列化成字符串。

撰写回答