[英]C# reversed ushort
我目前在某些Socket方面存在問題。
我想要的輸出是0x5801
,相反是0x0158
,實際上是344作為ushort。
ushort t = 344;
p.WriteString("\x58\x01", false);
我現在想使用變量而不是硬編碼的十六進制。 我已經嘗試了一些ReverseBit類,等等,但是沒有任何效果。
謝謝你的幫助!
從不使用WriteString
。 您要寫入二進制數據,對嗎? 因此,可以使用WriteShort
或直接寫入字節。
您沒有提供太多信息來處理(例如p
的類型,或此數據表示的意思),但是如果這是字節序問題,則可以考慮使用具有EndianBinaryWriter
和EndianBinaryReader
MiscUtil ,它們類似於框架BinaryWriter
和BinaryReader
類,但是具有指定字節序的能力。
聽起來像您想要IPAddress.HostToNetworkOrder
和NetworkOrderToHost
我認為這是您要嘗試執行的操作:
ushort t = 344;
var b = BitConverter.GetBytes(t);
if (!BitConverter.IsLittleEndian)
Array.Reverse(b);
//write b
BitConverter.GetBytes
方法返回的字節順序取決於您的計算機體系結構的字節順序。 但是, BitConverter.ToString
期望的字節順序也是如此,這意味着如果兩個操作都是在同一台計算機上執行的,則不必執行任何手動反向操作。
ushort t = 344;
byte[] bytes = BitConverter.GetBytes(t);
string hex = BitConverter.ToString(bytes);
hex = hex.Replace("-", "");
p.WriteString(hex);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.