タグ

ブックマーク / pieceofnostalgy.blogspot.com (1)

  • C# : ネットワークバイトオーダのバイト列からushort型の値を取り出す

    udpのパケットなど、ネットに流れているデータはネットワークバイトオーダ(ビックエンディアン)になっています。 それに対してx86系のシステムはリトルエンディアンです。 相互にやり取りするにはビックエンディアン⇔リトルエンディアンの変換が必要になります。 ネットワークバイトオーダ → クライアントマシンのバイトオーダの変換にはBitConverter.ToInt16などとIPAddress.NetworkToHostOrderを組み合わせるようです。 (BitConverterの代わりにMemoryStream+BinaryReaderを使うやり方もあり。) まず、エンディアンがあっていようがいまいがBitConverterで得たい型の変数に読み込み、その後NetworkToHostOrderで変換という流れです。 この変換をシフト演算を使った自前のコードで書いているのをたまに見ますが、そ

  • 1