Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2010, 08:33   #1
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию конвертация int16[] to byte[] и наоборот

Здравствуйте, хотелось бы найти быстрый, корректный способ выполнения... копировать данные Byffer.BlockCopy(.....), BitConverter и прочие прелести жизни как то не совсем хорошо решают... либо копируют либо перебор элементов сериализации у стандартного массива не нашел... очень хотелось бы просто "подменить" указатель - но не прокатывает, на &ShortArray матерится.

ЗЫ: BinaryFormatter сериализует в поток.. у потока так же свой буфер... если динамический то еще и наверняка больше чем нужно...

Последний раз редактировалось Teksa; 09.04.2010 в 08:58.
Teksa вне форума Ответить с цитированием
Старый 11.04.2010, 10:54   #2
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

если поконкретней:
есть byte[] полученный по сети, его необходимо конвертировать в short[] как можно более экономичным способом, желательно без создания второго массива.
Teksa вне форума Ответить с цитированием
Старый 11.04.2010, 11:24   #3
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Код:
byte[] bytes;
var shorts = Array.ConvertAll(bytes, b => (short)b);
Cpluser вне форума Ответить с цитированием
Старый 13.04.2010, 09:26   #4
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

не совсем то
Код:
  
//byte[] dt = new byte[1024];
//byte[] data = new short[512];

for (int i = 0; i < length; i++)
            {
                data[i] = BitConverter.ToInt16(dt, i * 2);
            }
пока тут стоит сия безобразная конструкция.
Teksa вне форума Ответить с цитированием
Старый 20.07.2010, 09:26   #5
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

вот про что я собственно и говорил тогда :
Код:
 fixed(byte *bpOurPack = OurPack, bpbuf = buf)
            {
                short* spOurPack = (short*)bpOurPack;
                short* spbuf = (short*)bpbuf;
                                
                    if (OurPack == null) return;

                    int EndOfPack =(HeaderSize+size)/2;

                    for (int i = HeaderSize/2; i < EndOfPack; i++)
                    {
                        *(spbuf + i) -= (short)(*(spOurPack + i)); 
                    }
                
            }
Teksa вне форума Ответить с цитированием
Старый 20.07.2010, 09:27   #6
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

не обессудьте просто скопировал кусок кода из программы..
Teksa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
byte - string fize Помощь студентам 4 10.01.2010 02:33
ВПР наоборот Python Microsoft Office Excel 6 11.04.2009 00:08
Array of byte в файл Deight Общие вопросы Delphi 3 05.12.2008 19:10
file of byte medikk Общие вопросы Delphi 1 11.08.2008 16:00
Слово наоборот Ketu Паскаль, Turbo Pascal, PascalABC.NET 12 16.03.2008 00:23