Convertendo 2 bytes para Short em C #

Estou tentando converter dois bytes em um curto não assinado para recuperar o valor real da porta do servidor. Estou baseando-me nissoprotocol especificação em Formato de resposta. Eu tentei usar BitConverter.ToUint16 () para isso, mas o problema é que não parece gerar o valor esperado. Veja abaixo uma amostra de implementação:

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;
}

Dada uma amostra de dados, digamos que para os valores de dois bytes, eu tenho 105 e 135, o valor esperado da porta após a conversão deve ser 27015, mas, em vez disso, recebo o valor 34665 usando o BitConverte

Estou fazendo isso da maneira errada?

questionAnswers(3)

yourAnswerToTheQuestion