代码之家  ›  专栏  ›  技术社区  ›  dankyy1

如何在c,a909中获取41104的ushort数据?

  •  2
  • dankyy1  · 技术社区  · 14 年前

    我正在尝试将int值转换为16位无符号字符类型(ushort)。在一个例子中,41104在ushort是A909,但在c中,我尝试使用代码示例as(在msdn文章的帮助下) BitConverter.GetBytes Yöntem (UInt16) ):

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

    如何将A909值作为ushort for 41104获取?

    2 回复  |  直到 11 年前
        1
  •  2
  •   msteiger    14 年前

    实际上,正确的(=十六进制)值是a090。我不管它是不是ushort,你想要的是显示十六进制的等价物。

    您提供的代码段已经执行了此操作。一个字节是“a0”,另一个是“90”。你只要把订单做好就行了。

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

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

    正如你所看到的,这不是真正的数据转换,而是一种不同的显示方式。

        2
  •  1
  •   Peter Mortensen code4jhon    11 年前

    您需要重新排序字节:

    byte[] bytes = BitConverter.GetBytes(41104);
    if (BitConverter.IsLittleEndian)
    {    List<byte> tmp = new List<byte>();
         tmp.AddRange(bytes);
         tmp.Reverse();
         bytes = tmp.ToArray();
    }
    
    推荐文章