エンコードされた形式でデータを送信する iOS アプリがあります。PHP では、次のコードで適切にデコードされます。
bson_decode(pack("H*", $hex_string));
Python では、次のコードは、PHP コードがデコードできる有効なエンコードされたオブジェクトを作成します (これdata
は adict
です)。
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 コードが余分なパディングを追加しているようです。アプリでエンコードされた文字列から最後の文字を削除すると、機能します。これを説明するために私にできることはありますか?アプリコードを変更することはできません。サポートが必要な古いコードを実行している何百万ものデバイスがあったとしても、これを修正する必要があります。