我正在尝试将INT值转换为16位未签名的炭类型(USHORT)。在一个示例中,41104在ushort中为A909,但是在C#中,我尝试了代码示例(在MSDN文章的帮助下 bitConverter.getBytesyöntem(uint16)):

byte[] bytes = BitConverter.GetBytes(41104);
string bytes = BitConverter.ToString(byteArray);
//It returns "90-A0"

如何获得41104的A909值?

有帮助吗?

解决方案

实际上,正确的(=十六进制)值为A090。我不管是否没有管教,您想要的是显示同等标准。

您提供的代码片段已经做到这一点。一个字节是“ A0”另一个“ 90”。您只需要正确地订单即可。

另一种方法是让.NET完成工作

String.Format("{0:X}", 41104);

如您所见,它不是真正的数据转换,而是一种不同的显示方式。

其他提示

您需要重新排序字节:

byte[] bytes = BitConverter.GetBytes(41104);
if (BitConverter.IsLittleEndian)
{    List<byte> tmp = new List<byte>();
     tmp.AddRange(bytes);
     tmp.Reverse();
     bytes = tmp.ToArray();
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top