Как конвертировать sbyte [] в BitArray? C # .Net - PullRequest
0 голосов
/ 07 июля 2010

Я пытаюсь интегрировать две системы, которые работают с изображениями.Одна система предоставляет изображение в виде sbyte [], а другая использует BitArray.Мне нужно взять данные из sbyte [] и преобразовать их в BitArray.Кто-нибудь знает, как это сделать?

Спасибо, Пол

Ответы [ 2 ]

1 голос
/ 07 июля 2010

Самый простой способ - преобразовать 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);
0 голосов
/ 07 июля 2010

BitArray имеет конструктор , который принимает байтовый массив, который вы можете попробовать:

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