c# - 如何从 BitArray 中获取单个字节(没有 byte[])?

标签 c# .net

我想知道,有没有办法将 BitArray 转换为字节(与字节数组相对)?我将在 BitArray 中有 8 位..

 BitArray b = new BitArray(8);


//in this section of my code i manipulate some of the bits in the byte which my method was given. 

 byte[] bytes = new byte[1];
 b.CopyTo(bytes, 0);

这就是我目前所拥有的....是否必须将字节数组更改为字节或者我是否可以将 BitArray 直接更改为字节都没有关系。我更希望能够将 BitArray 直接更改为字节...有什么想法吗?

最佳答案

你可以写一个扩展方法

    static Byte GetByte(this BitArray array)
    {
        Byte byt = 0;
        for (int i = 7; i >= 0; i--)
            byt = (byte)((byt << 1) | (array[i] ? 1 : 0));
        return byt;
    }

你可以这样使用它

        var array = new BitArray(8);
        array[0] = true;
        array[1] = false;
        array[2] = false;
        array[3] = true;

        Console.WriteLine(array.GetByte()); <---- prints 9

9 十进制 = 1001 二进制

关于c# - 如何从 BitArray 中获取单个字节(没有 byte[])?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9747611/

相关文章:

.net - 如何将 IQueryable<Something> 作为 IQueryable<ISomething> 返回

.net - 如何安排我的 Windows 服务每十分钟运行一次

c# - 获取远程服务器的准确时间

c# - 如何从 SQLite 数据库中以字符串数据类型的形式从 Select 查询获取数据?

c# - 组合框触发空选择

c# - 将 TSQL 查询转换为 LINQ

c# - 可以为属性的 get 和 set 访问器指定单独的访问修饰符吗?

c# - 如何将 JToken 转换为嵌套的 float 列表?

c# - 如何参数化 SQL 表而不会受到 SQL 注入(inject)的影响

.net - 为什么 WPF 支持绑定(bind)到对象的属性,但不支持绑定(bind)字段?