【发布时间】:2011-03-12 21:59:35
【问题描述】:
我正在尝试集成两个处理图像的系统。一个系统以 sbyte[] 的形式提供图像,而另一个系统使用 BitArray。我需要从sbyte[] 获取数据并将其转换为BitArray。有人知道怎么做吗?
谢谢,保罗
【问题讨论】:
我正在尝试集成两个处理图像的系统。一个系统以 sbyte[] 的形式提供图像,而另一个系统使用 BitArray。我需要从sbyte[] 获取数据并将其转换为BitArray。有人知道怎么做吗?
谢谢,保罗
【问题讨论】:
最简单的方法是将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);
【讨论】:
BitArray 有一个 constructor 接受一个字节数组,你可以试试:
sbyte[] sbytes = ...
BitArray ba = new BitArray(sbytes.Select(x => (byte)x).ToArray());
【讨论】: