【问题标题】:How to covert a sbyte[] to BitArray? C#.Net如何将 sbyte[] 转换为字节数组? C#.Net
【发布时间】:2011-03-12 21:59:35
【问题描述】:

我正在尝试集成两个处理图像的系统。一个系统以 sbyte[] 的形式提供图像,而另一个系统使用 BitArray。我需要从sbyte[] 获取数据并将其转换为BitArray。有人知道怎么做吗?

谢谢,保罗

【问题讨论】:

    标签: casting bitarray


    【解决方案1】:

    最简单的方法是将sbyte[] 转换为byte[],然后将其传递给普通的BitArray 构造函数。如果您使用的是 .NET 3.5,那么使用 LINQ 很容易:

    byte[] bytes = sbytes.Select(s => (byte) s).ToArray();
    BitArray bitArray = new BitArray(bytes);
    

    这是假设您已经在未经检查的上下文中执行。否则,您可能希望明确取消选中转换:

    byte[] bytes = sbytes.Select(s => unchecked((byte) s)).ToArray();
    BitArray bitArray = new BitArray(bytes);
    

    【讨论】:

    • 很酷,那么如何将 sbyte[] 转换为 byte[]。谢谢。
    • @Paul:您是否阅读了我的全部答案?它向您展示了 - 两次!
    【解决方案2】:

    BitArray 有一个 constructor 接受一个字节数组,你可以试试:

    sbyte[] sbytes = ...
    BitArray ba = new BitArray(sbytes.Select(x => (byte)x).ToArray());
    

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 2014-06-25
      • 2011-08-05
      • 2015-07-25
      • 1970-01-01
      • 2016-06-16
      • 1970-01-01
      • 2022-01-27
      • 2023-01-24
      相关资源
      最近更新 更多