[英]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.