0

サーバーからデータを受信する必要があります。サーバーのアプリケーションは VS2008 (MFC) で書かれています。このデータをサーバーから送信する方法は 1 つしかありません -> CArchive オブジェクトとして。サーバーソースを変更できません。

このデータを PHP で (tcp で) 受け取り、JSON に変換したいと考えています。CArchive を JSON に変換するスマートな方法はありますか?

4

1 に答える 1

1

CArchive解析できる定義済みの形式がありません。これは、アプリケーションに依存する単なるバイナリ ファイルです。読み方を知るには、その内容を知らなければなりません。CStringライブラリを使用すると、一部のデータ型 ( 、など)を読みやすくなる可能性がありCArrayますが、このようなものが見つかるかどうかはわかりません。

次の例は、どのように機能するかを示していますCArchive(格納部分)。

CArchive ar;
int i = 500;
float f = 10.4f;
CString str(_T("string"));
ar << i << f << str;

したがって、バイナリ データを読み取って、何らかの形で解釈する必要があります。MFCフレームワークは、やなどの複雑な型を含む型をシリアル化する方法を正確に認識しているため、 C++ ではこれは簡単です。ただし、これはPHPを使用して自分で行う必要があります。CStringCArray

たとえば、指定されたオフセットで 4 バイトを読み取り、それをint. の次の 4 バイトfloat。次に、ロード方法を確認する必要CStringがあります。最初に長さを格納し、次にデータを格納しますが、使用する正確な形式を確認する必要があります。

すぐに使用できるCArchive-> JSONコンバーターはありません。CArchiveJSONデータの両方を生成するようにサーバー コードを変更することをお勧めします。

于 2015-04-10T06:56:07.023 に答える