Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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
C# 将16字节数组响应转换为十进制_C#_Arrays - Fatal编程技术网

C# 将16字节数组响应转换为十进制

C# 将16字节数组响应转换为十进制,c#,arrays,C#,Arrays,我正在开发一个应用程序,其中我收到了一个16字节的数组响应。在该响应中,将设置1位以指示位置值。例如,我可能会得到: 0000 01000 0000 0000 0000 0000 0000 0000 0000 表示设备5已响应,第一位表示设备0 有没有一种简单的方法可以将这种长度的字节数组转换为十进制值?十进制类不是表示这种数据的合适方法。您可能正在寻找的是。如果我正确理解您的问题,您可以使用for循环,计数器将是您的设备编号 编辑:添加了代码示例 备注:实际上我不明白你的例子。为什么说16个字

我正在开发一个应用程序,其中我收到了一个16字节的数组响应。在该响应中,将设置1位以指示位置值。例如,我可能会得到:

0000 01000 0000 0000 0000 0000 0000 0000 0000

表示设备5已响应,第一位表示设备0


有没有一种简单的方法可以将这种长度的字节数组转换为十进制值?

十进制类不是表示这种数据的合适方法。您可能正在寻找的是。

如果我正确理解您的问题,您可以使用for循环,计数器将是您的设备编号

编辑:添加了代码示例


备注:实际上我不明白你的例子。为什么说16个字节,但每组都是4位呢。您是如何从bytearray获得5号设备的?

尝试以下方法:

byte[] yourByteArr = { 0, 0, 32, 0, };

var firstSetBit = (new BitArray(yourByteArr)).Cast<bool>()
    .Select(Tuple.Create<bool, int>).FirstOrDefault(x => x.Item1);
int indexOfFirstSetBit = firstSetBit != null ? firstSetBit.Item2 : -1;
如果不能确定没有设置位,只需执行以下操作:

int indexOfFirstSetBit = (new BitArray(yourByteArr)).Cast<bool>()
    .Select(Tuple.Create<bool, int>).First(x => x.Item1).Item2;

您是如何从提供的序列中获得5的?只有一个位将被设置为1,或者可以是多个位?这些4字符组代表什么?一个字节?顺便问一下:为什么第二组是5字符组?如果两组都是bytearray[n]!=null和bytearray[n]==1是否有意义?您是否收到有关此问题的警告!=总是满足空标准?我还没有测试过这段代码。如果它不能像byte[]数组那样工作,那么它将是一个必须首先转换的整数。这只是一个我将如何处理它的例子。我不完全确定他是如何存储tho值的。我也不确定,但我假设数组中的每个字节可以是零或0x01、0x02、0x04、0x08、0x10、0x20、0x40、0x80中的一个。每个数组项是携带一位还是八位存在一个问题。
int indexOfFirstSetBit = (new BitArray(yourByteArr)).Cast<bool>()
    .Select(Tuple.Create<bool, int>).First(x => x.Item1).Item2;