首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过Byte[]连接到BitArray,然后返回到Byte[]

通过Byte[]连接到BitArray,然后返回到Byte[]
EN

Stack Overflow用户
提问于 2017-08-18 22:44:09
回答 2查看 3.7K关注 0票数 3

正如标题所述,我正在尝试再次将字节数组转换为位数组,再转换回字节数组。

我知道Array.CopyTo()会处理这个问题,但由于BitArray在LSB中存储值的方式不同,接收到的字节数组与原始字节数组不同。

在C#中你是怎么做的呢?

EN

Stack Overflow用户

回答已采纳

发布于 2017-08-18 23:24:52

这应该就行了

代码语言:javascript
复制
static byte[] ConvertToByte(BitArray bits) {
    // Make sure we have enough space allocated even when number of bits is not a multiple of 8
    var bytes = new byte[(bits.Length - 1) / 8 + 1];
    bits.CopyTo(bytes, 0);
    return bytes;
}

你可以使用一个简单的驱动程序来验证它,如下所示

代码语言:javascript
复制
// test to make sure it works
static void Main(string[] args) {
    var bytes = new byte[] { 10, 12, 200, 255, 0 };
    var bits = new BitArray(bytes);
    var newBytes = ConvertToByte(bits);

    if (bytes.SequenceEqual(newBytes))
        Console.WriteLine("Successfully converted byte[] to bits and then back to byte[]");
    else
        Console.WriteLine("Conversion Problem");
}

我知道OP知道Array.CopyTo解决方案(与我这里的解决方案类似),但我不明白它为什么会导致任何位顺序问题。仅供参考,我正在使用.NET 4.5.2进行验证。因此,我提供了测试用例来确认结果。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45759398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档