CArchive (MFC) 到 JSON?
CArchive (MFC) to JSON?
我必须从服务器接收数据。服务器的应用程序是用 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
,它先存储长度,然后存储数据,但你必须看看它使用的确切格式。
没有 ready-to-go/use CArchive
-> JSON 转换器。我建议您修改服务器代码以生成 CArchive
和 JSON 数据。
我必须从服务器接收数据。服务器的应用程序是用 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
,它先存储长度,然后存储数据,但你必须看看它使用的确切格式。
没有 ready-to-go/use CArchive
-> JSON 转换器。我建议您修改服务器代码以生成 CArchive
和 JSON 数据。