したがって、ここではバイト配列に基づいてshorts / longsを作成しており、memcpy
バイトを独自の変数にコピーして、その変数をsockaddr_in
オブジェクトに割り当てることは避けたかったのです。
short
次のステートメントでを抽出するためのより良い方法はありますか?:
((sockaddr_in*)from)->sin_port = (*((unsigned short*)&buf[4]));
私のロジックが正しければ、(unsigned short)buf[4]
キャストだけを実行すると1バイトしか変換されないため、ポインター/逆参照のすべてを実行しました。両方ではありません。
編集:エンディアンは問題ありません。を使用する以外に、buf[4]とbuf[5]を1つの短い方法で簡単にまとめたいだけですmemcpy
。