実際のサーバーポート値を取得できるように、2バイトをunsignedshortに変換しようとしています。私は、応答フォーマットの下でこのプロトコル仕様に基づいています。これにBitConverter.ToUint16()を使用してみましたが、問題は、期待値をスローしていないように見えることです。実装例については、以下を参照してください。
int bytesRead = 0;
while (bytesRead < ms.Length)
{
int first = ms.ReadByte() & 0xFF;
int second = ms.ReadByte() & 0xFF;
int third = ms.ReadByte() & 0xFF;
int fourth = ms.ReadByte() & 0xFF;
int port1 = ms.ReadByte();
int port2 = ms.ReadByte();
int actualPort = BitConverter.ToUInt16(new byte[2] {(byte)port1 , (byte)port2 }, 0);
string ip = String.Format("{0}.{1}.{2}.{3}:{4}-{5} = {6}", first, second, third, fourth, port1, port2, actualPort);
Debug.WriteLine(ip);
bytesRead += 6;
}
1つのサンプルデータが与えられたとしましょう。たとえば、2バイトの値に対して105と135があり、変換後の期待されるポート値は27015ですが、代わりにBitConverterを使用して34665の値を取得します。
私はそれを間違った方法でやっていますか?