我必须从服务器接收数据。服务器的应用程序是用VS2008(MFC)编写的。只有一种方法可以从服务器发送此数据 - >作为CArchive对象。我无法更改服务器来源。
我希望用PHP(通过tcp)接收这些数据,并将它们转换为JSON。是否有任何将CArchive转换为JSON的智能方法?
答案 0 :(得分:1)
CArchive
没有可以解析的预定义格式。它只是一个依赖于应用程序的二进制文件。你必须知道它是什么,知道如何阅读它。一个库可以让你更容易阅读一些数据类型(CString
,CArray
等)但我不确定你会发现这样的东西。
以下示例显示CArchive
如何工作(存储部分):
CArchive ar;
int i = 500;
float f = 10.4f;
CString str(_T("string"));
ar << i << f << str;
所以你必须读取二进制数据并以某种方式解释它。这在 C ++ 中很容易,因为 MFC 框架确切地知道如何序列化类型,包括CString
和CArray
等复杂类型。但是你必须自己使用 PHP 。
例如,您可能会在指定的偏移处读取4个字节并将其解释为int
。 float
的下四个字节。然后你必须看看如何加载CString
,它首先存储长度然后存储数据,但你必须看看它使用的确切格式。
没有现成的/使用CArchive
- &gt; JSON 转换器。我建议您修改服务器代码以生成CArchive
和 JSON 数据。