System.IO.BinaryReader以little-endian格式讀取值。如何簡化BinaryReader的網絡字節順序轉換?
我有一個C#應用程序連接到服務器端的專有網絡庫。正如人們所期望的那樣,服務器端以網絡字節順序發送所有內容,但我發現在客戶端處理這個問題非常棘手,特別是對於無符號值。
UInt32 length = (UInt32)IPAddress.NetworkToHostOrder(reader.ReadInt32());
是我想出來的,以獲得正確的無符號數出流的唯一途徑,但是這似乎既尷尬又醜,而且我還沒有測試,如果這只是要剪掉高順序值,以便我必須玩轉BitConverter的東西。
有沒有一些方法我錯過了在整個事情中編寫一個包裝以避免在每次讀取時都會發生這些醜陋的轉換?看起來讀者應該有一個endian-ness選項來讓事情變得更簡單,但我沒有遇到任何問題。
當字節可能表示一個本地整數時,原始代碼是否正常工作? – 2013-08-01 17:58:30
現在它不會有幫助,但我爲BinaryReder/Writer創建了一個[連接故障單](https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=484149)以支持Bigendian。去投票它[這裏](https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=484149)。 – 2009-08-25 13:20:49