Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取41104的C#A909中的ushort数据?_C#_Bitconverter_Ushort - Fatal编程技术网

如何获取41104的C#A909中的ushort数据?

如何获取41104的C#A909中的ushort数据?,c#,bitconverter,ushort,C#,Bitconverter,Ushort,我正在尝试将int值转换为16位无符号字符类型(USHORT)。在一个示例中,41104在ushort中是A909,但在C#中,我尝试使用代码示例as(借助MSDN文章的帮助): 如何获得A909值作为41104的ushort?实际上正确的(=十六进制)值是A090。我不管它是否是ushort,你想要的是显示十六进制的等价物 您提供的代码段已经完成了这项工作。一个字节为“A0”,另一个字节为“90”。你只要把订单做好就行了 另一种方法是让.NET来完成这项工作 String.Format("{0

我正在尝试将int值转换为16位无符号字符类型(USHORT)。在一个示例中,41104在ushort中是A909,但在C#中,我尝试使用代码示例as(借助MSDN文章的帮助):

如何获得A909值作为41104的ushort?

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

您提供的代码段已经完成了这项工作。一个字节为“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();
}
byte[]bytes=BitConverter.GetBytes(41104);
if(位转换器.IsLittleEndian)
{List tmp=new List();
tmp.AddRange(字节);
tmp.Reverse();
字节=tmp.ToArray();
}

thnx供您回复。在上面的代码示例中,定义tmp后()被遗忘,因此代码块应与第三行列表中的相同tmp=new List();另外,有些值必须转换为ULONG,有些值必须转换为USHORT,有些值必须转换为SHORT数据类型如何转换这些类型??thnxi正在谷歌搜索,发现转换为。。。ushort string的string.Format(“{0:X16}”,41104)。ulong string的Format(“{0:X32}”,41104)。字节的Format(“{0:X8}”,41104)可以使用。同样,
Convert.ToString(,16)
@dankyy1我认为您分别在寻找X4、X16、X2。长度说明符是十六进制数字的数目。
byte[] bytes = BitConverter.GetBytes(41104);
if (BitConverter.IsLittleEndian)
{    List<byte> tmp = new List<byte>();
     tmp.AddRange(bytes);
     tmp.Reverse();
     bytes = tmp.ToArray();
}