System.IO.BinaryReader lee valores en formato little-endian.¿Cómo se puede simplificar la conversión de orden de bytes de red desde un BinaryReader?
Tengo una aplicación C# que se conecta a una biblioteca de red propietaria en el lado del servidor. El lado del servidor envía todo en orden de bytes de red, como era de esperar, pero me parece que lidiar con esto en el lado del cliente es incómodo, particularmente para los valores sin firmar.
UInt32 length = (UInt32)IPAddress.NetworkToHostOrder(reader.ReadInt32());
es la única manera que he llegado con conseguir un valor sin signo correcto de la corriente, pero esto parece tanto torpe y feo, y todavía tengo que probar si eso sólo va a recortar de alta -ordenar valores para que tenga que hacer cosas divertidas con BitConverter.
¿Hay alguna manera en la que me falte escribir una envoltura alrededor de todo para evitar estas feas conversiones en cada lectura? Parece que debería haber una opción de endianidad en el lector para simplificar cosas así, pero no he encontrado nada.
¿El código original funciona correctamente cuando los bytes pueden representar un número entero nativo? –
No será de ayuda ahora, pero creé un [boleto de conexión] (https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=484149) para BinaryReder/Writer para admitir Bigendian fuera de la caja. Vaya a votar aquí [aquí] (https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=484149). –