2

ntohs()からデータを読み取るときの使い方について質問がありますstringstream

次のコードの場合:

read(ns, buf_receive, BUFFER_SIZE);

stringstreams ss(buf_receive);
char[2] a;
short int b;

ss << a[0] << a[1];
ss << b;

cout >> b;

私の問題は、受信したデータ形式が純粋ではないことにありshortます。buf_receiveしたがって、この関数をso: のように に直接配置することも、 so:のようntohs(buf_receive)に に使用することもできません。bntohs(b)

これを実装するための良い方法はありますか (手動でビットをシフトする必要はありません)。

4

1 に答える 1

1

を含むクラスをいつでも作成し、カスタムをshort定義して、ストリームから値を読み取り/書き込みすることができます。これは、とをそれぞれ呼び出すことによってバイト順序を処理します。operator>>operator<<ntohshtons

short次に、例のの使用法を新しいクラスタイプに置き換えます。

その宿題として、私は実装を提供しません。

于 2012-05-17T18:40:52.560 に答える