簡體   English   中英

C#反向Ushort

[英]C# reversed ushort

我目前在某些Socket方面存在問題。

我想要的輸出是0x5801 ,相反是0x0158 ,實際上是344作為ushort。

ushort t = 344;
p.WriteString("\x58\x01", false);

我現在想使用變量而不是硬編碼的十六進制。 我已經嘗試了一些ReverseBit類,等等,但是沒有任何效果。

謝謝你的幫助!

從不使用WriteString 您要寫入二進制數據,對嗎? 因此,可以使用WriteShort或直接寫入字節。

您沒有提供太多信息來處理(例如p的類型,或此數據表示的意思),但是如果這是字節序問題,則可以考慮使用具有EndianBinaryWriterEndianBinaryReader MiscUtil ,它們類似於框架BinaryWriterBinaryReader類,但是具有指定字節序的能力。

聽起來像您想要IPAddress.HostToNetworkOrderNetworkOrderToHost

http://msdn.microsoft.com/en-us/library/fw3e4a​​0f

我認為這是您要嘗試執行的操作:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM