Convertir 2 bytes a Corto en C #

Estoy tratando de convertir dos bytes en un corto sin signo para poder recuperar el valor real del puerto del servidor. Me estoy basando en estoprotocol especificación en Formato de respuesta. Intenté usar BitConverter.ToUint16 () para esto, pero el problema es que no parece arrojar el valor esperado. Vea a continuación una implementación de muestra:

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

Dado una muestra de datos, digamos que para los dos valores de bytes, tengo 105 y 135, el valor de puerto esperado después de la conversión debería ser 27015, pero en su lugar obtengo un valor de 34665 usando BitConverter.

¿Lo estoy haciendo de manera incorrecta?

Respuestas a la pregunta(3)

Su respuesta a la pregunta