Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Запись в массив байт со сдвигом


Автор: VampirDX 26.11.2009, 21:35
Проблема такая. Есть 2 массива байт. В один записываются данные с файла, во второй записываются 3 байта из первого массива. Байты, допустим, со 2-го по 4-й включительно. Не разобрался совсем со сдвигом..., еще, когда разговаривал на эту тему, сказали, что там надо использовать |(или)

Код



     byte[] file = new byte[30720];
     byte[] temp = new byte[3];
     file = File.ReadAllBytes("некоторый файл с данными");
     for (int i = 2; i < 5; i++)
              {
                   //что и как сюда записать?
              }


Попробовал родить что-то типа такого

Код



     t[i-2] = (f[i] <<= 2) | (f[i] <<= 1) | (f[i] <<= 0);


  но, во первых ощущение, как будто ежика против шерсти родил, а во-вторых ругается на всю правую часть после "="
PS: в центре помощи описывал проблему, но ответа нету.

Автор: tol05 26.11.2009, 23:47
попробуйте метод Array.CopyTo()

Автор: Heinzz 27.11.2009, 19:07
Код

 byte[] file = new byte[]{1,6,3,8,3,1,4,8,9,5,3,2};
            byte[] temp = new byte[3];

            temp = file.Skip(2).Take(3).ToArray();


где Skip пишем с какой позиции начать запись в массив temp, а где Take пишем сколько чисел записать

Автор: SmartBye 30.11.2009, 21:32
Может автор имел ввиду побитовый сдвиг? То это не сюда.

Автор: VampirDX 1.12.2009, 17:36
SmartBye а куда?

Автор: gwi52 6.12.2009, 18:41
1. Buffer.BlockCopy( ByteArr,0,ByteArr,1,ByteArr.Length-1);  
2. Array.Copy( ObjArr,0,ObjArr,1,ObjArr.Length-1);

(2) работает для любых массивов, а (1) в 1.5 раза быстрее, но только для массивов примитивов

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)