0

私は構造を持っています:

struct {
  Header header;
  uint32_t var1;
  uint32_t var2;
  char var3;
  char var4[4];
};

ヒントが得られます。問題は、ネットワーク経由でバイト配列を受信して​​いることです。最初にヘッダーを解析する必要があります。そのため、最初にヘッダーを解析してから、残りの構造を解析する必要があります。

私は試した、

void* V = data;  // which is sizeof(uint32_t) * 2 + sizeof(char) * 5

次に、(V)、V+sizeof(uint32_t) ... などのように解析してみます。

しかし、コンパイルエラーが発生しました。この構造体の残りをネットワーク経由で解析するにはどうすればよいですか?

4

1 に答える 1

3

C++ におけるデータの基本単位は ですchar。これは、アドレス指定できる最小のタイプであり、定義上、サイズは 1 です。さらに、言語規則では、すべてのデータを一連の文字として表示することが明確に許可されています。すべての I/O は、文字のシーケンス (またはストリーム) に関して発生します。

したがって、生データ バッファーはchar配列にする必要があります。

(一方、 avoid *は C++ では非常に特殊で限られた用途しかありません。主な目的は、メモリ内のオブジェクトのアドレスを指定することです。たとえば、 の結果operator new()は avoid *です。)

于 2012-05-16T05:32:57.787 に答える