从 BitArray 转换为 Byte
我有一个 BitArray< /code>
的长度为 8,我需要一个函数将其转换为
byte
。 怎么做?
具体来说,我需要一个正确的 ConvertToByte
函数:
BitArray bit = new BitArray(new bool[]
{
false, false, false, false,
false, false, false, true
});
//How to write ConvertToByte
byte myByte = ConvertToByte(bit);
var recoveredBit = new BitArray(new[] { myByte });
Assert.AreEqual(bit, recoveredBit);
I have a BitArray
with the length of 8, and I need a function to convert it to a byte
. How to do it?
Specifically, I need a correct function of ConvertToByte
:
BitArray bit = new BitArray(new bool[]
{
false, false, false, false,
false, false, false, true
});
//How to write ConvertToByte
byte myByte = ConvertToByte(bit);
var recoveredBit = new BitArray(new[] { myByte });
Assert.AreEqual(bit, recoveredBit);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
这应该有效:
This should work:
有点晚了,但这对我有用:
适用于:
。
A bit late post, but this works for me:
Works with:
.
穷人的解决办法:
A poor man's solution:
不幸的是,BitArray 类在 .Net Core 类 (UWP) 中部分实现。 例如,BitArray 类无法调用 CopyTo() 和 Count() 方法。 我编写了这个扩展来填补空白:
该方法使用 LSB(低位字节)逻辑将 BitArray 解码为字节数组。 这与 BitArray 类使用的逻辑相同。 调用 MSB 参数设置为 true 的方法将生成 MSB 解码的字节序列。 在这种情况下,请记住您可能还需要反转最终的输出字节集合。
Unfortunately, the BitArray class is partially implemented in .Net Core class (UWP). For example BitArray class is unable to call the CopyTo() and Count() methods. I wrote this extension to fill the gap:
The method decodes the BitArray to a byte array using LSB (Less Significant Byte) logic. This is the same logic used by the BitArray class. Calling the method with the MSB parameter set on true will produce a MSB decoded byte sequence. In this case, remember that you maybe also need to reverse the final output byte collection.
这应该可以解决问题。 然而,之前的答案很可能是更好的选择。
在您发布的示例中,结果字节将为 0x80。 换句话说,BitArray 中的第一个值对应于返回字节中的第一个位。
This should do the trick. However the previous answer is quite likely the better option.
In the example you posted the resulting byte will be 0x80. In other words the first value in the BitArray coresponds to the first bit in the returned byte.
这应该是最终的结局了 适用于任何长度的数组。
That's should be the ultimate one. Works with any length of array.
除了@JonSkeet的答案之外,您还可以使用如下扩展方法:
并使用如下:
In addition to @JonSkeet's answer you can use an Extension Method as below:
And use like:
干杯!
Cheers!
Little endian 字节数组转换器:BitArray 中的第一位(以“0”索引)
假定表示最低有效位(位八位组中最右边的位),其解释为二进制的“零”或“一”。
Little endian byte array converter : First bit (indexed with "0") in the BitArray
assumed to represents least significant bit (rightmost bit in the bit-octet) which interpreted as "zero" or "one" as binary.