Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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/0/backbone.js/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# 位数组到字节[]转换后的字节顺序_C#_Arrays_Byte_Bit_Bitarray - Fatal编程技术网

C# 位数组到字节[]转换后的字节顺序

C# 位数组到字节[]转换后的字节顺序,c#,arrays,byte,bit,bitarray,C#,Arrays,Byte,Bit,Bitarray,我在,试图找出从BitArray到byte[]转换后的字节顺序 首先,这里是位数组的内容: BitArray encoded = huffmanTree.Encode(input); foreach (bool bit in encoded) { Console.Write((bit ? 1 : 0)); } Console.WriteLine(); 输出: Encoded: 0000010

我在,试图找出从BitArray到byte[]转换后的字节顺序

首先,这里是位数组的内容:

BitArray encoded = huffmanTree.Encode(input);
foreach (bool bit in encoded)
            {
                Console.Write((bit ? 1 : 0));
            }
            Console.WriteLine();
输出:

Encoded: 000001010110101011111111
A0-56-FF
好的,如果我们手动将这些二进制转换为十六进制,我们将得到:
056a FF
然而,当我在C#中使用转换时,我得到的是:

BitArray encoded = huffmanTree.Encode(input);

byte[] bytes = new byte[encoded.Length / 8 + (encoded.Length % 8 == 0 ? 0 : 1)];
encoded.CopyTo(bytes, 0);
string StringByte = BitConverter.ToString(bytes);
Console.WriteLine(StringByte); // just to check the Hex
输出:

Encoded: 000001010110101011111111
A0-56-FF

不过,正如我刚才所说,应该是05 6A FF。请帮助我理解为什么会这样。

当您对位进行访问时,可能会以LSB到MSB的方式返回位。查看A0,您将得到
1010 0000
,MSB位于左侧。但如果你把它反转,你会得到
0000 0101
或05。十六进制6和F在反转时保持不变(但开关位于双十六进制)。我明白了。有什么方法可以使订单正确吗?这两个订单中哪一个是“正确的”?如果您想打印出右边有最低有效位的1和0,然后向后迭代位数组(即从最高索引、最高有效位开始,而不是最低索引位开始)。谢谢大家,现在已经清楚了!我可以请你帮我实施吗?一旦它被转换成字节,我想把它看作05 6A FF。对不起,如果我把你弄糊涂了,再次谢谢你。你确定吗?我认为你的“编码”输出更有可能被反转?