System.IO.BinaryReader lit les valeurs dans un format little-endian.Comment peut-on simplifier la conversion des octets d'ordre réseau à partir d'un BinaryReader?
J'ai une application C# connexion à une bibliothèque de réseau propriétaire sur le côté serveur. Le côté serveur envoie tout en bas dans l'ordre des octets du réseau, comme on peut s'y attendre, mais je trouve qu'il est difficile de gérer cela du côté client, en particulier pour les valeurs non signées.
UInt32 length = (UInt32)IPAddress.NetworkToHostOrder(reader.ReadInt32());
est la seule façon que je suis venu avec pour obtenir une valeur non signée correcte du flux, mais cela semble à la fois maladroit et laid, et je dois encore tester si cela va juste couper outre haute -ordonner les valeurs afin que je doive faire des choses amusantes BitConverter.
Y a-t-il un moyen de me passer de l'écriture d'un wrapper pour éviter ces vilaines conversions à chaque lecture? Il semble qu'il devrait y avoir une option endian-ness sur le lecteur pour rendre les choses plus simples, mais je n'ai rien trouvé.
Le code d'origine fonctionne-t-il correctement lorsque les octets peuvent représenter un entier natif? –
Il ne va pas aider, mais je créé un [connecter ticket] (https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=484149) pour BinaryReder/Writer pour soutenir bigEndian la boîte. Allez voter pour cela [ici] (https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=484149). –