我们有一个 iOS 应用程序,它以编码格式发送数据。在 PHP 中,以下代码将正确解码。
bson_decode(pack("H*", $hex_string));
在 Python 中,以下代码将创建一个有效的编码对象,然后 PHP 代码可以对其进行解码(在 this 中data
是 a dict
)。
from bson import BSON
def encode(data):
return str(BSON.encode(data)).encode('hex')
以下 Python 代码将解码由上述 Python 代码编码的字符串:
from bson import BSON
def parse(str):
hexed = str.decode('hex')
return BSON.decode(BSON(hexed))
理论上,这也应该解码从应用程序发送的数据。但它会引发以下异常:
bson.errors.InvalidBSON: bad eoo
看起来像在应用程序中对数据进行编码的 Objective C 代码添加了一些额外的填充。如果我从应用程序编码的字符串中删除最后一个字符,它就可以工作。我能做些什么来解决这个问题吗?无法更改应用程序代码。即使有数百万台设备运行我需要支持的旧代码,所以我仍然需要对此进行修复。