我必须从服务器接收数据。服务器的应用程序是用VS2008(MFC)编写的。只有一种方法可以将此数据作为CArchive对象从服务器->发送。我无法更改服务器源。
我想用PHP(通过tcp)接收这些数据,并将它们转换为JSON。将CArchive转换为JSON有什么明智的方法吗?
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
->JSON转换器。我建议您修改服务器代码以生成CArchive
和JSON数据。