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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2010, 20:48   #11
Linore
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 95
По умолчанию

я смогла решить проблему чтобы он мне считал CRC16 правильно
поэтому выкладываю работающий код может кому пригодится
Код:
class CRC
    {
        public static ushort CRC16_alg(byte[] msg, ushort length)
        {
            const ushort polinom = 0xa001;
            ushort code = 0xffff;

//            int size = msg.Length;
            for (int i = 0; i < length; i++)
            {
                //Для каждого байта массива
                byte ml;
                ml = (byte)(code);          //в ml помещаем младший байт 16-ти разрядного числа code (будущий СRС16)
                ml ^= msg[i];               //производим XOR между ml и msg[i] и помещаем его в ml
                code &= 0xff00;             //обнуляем младший байт числа code
                code += ml;
                for (int j = 0; j < 8; j++)
                {
                    //выделяем младший бит code и проверяем его на 1 или 0
                    if ((code & 0x0001) == 1)
                    {//Младший бит code = 1
                        code >>= 1;         //сдвиг вправо на 1 бит с присвоением
                        code ^= polinom;    //операция XOR переменных code с polinom с помещением результата в code
                    }
                    else
                    {//Младший бит code = 0
                        code >>= 1;         //сдвиг вправо на 1 бит с присвоением
                    }
                }
            }
            return code;
        }

Последний раз редактировалось Carbon; 02.02.2010 в 20:51.
Linore вне форума Ответить с цитированием
Старый 02.02.2010, 21:13   #12
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

молодец, что сама... поиском тоже учимся пользоваться >>> тык <<<
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.02.2010, 19:41   #13
Linore
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 95
По умолчанию

Интересно где ты в C# нашел unsigned int CRC(unsigned int *lMessage, unsigned char lCount)
Linore вне форума Ответить с цитированием
Старый 03.02.2010, 20:14   #14
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от Linore Посмотреть сообщение
Интересно где ты в C# нашел unsigned int CRC(unsigned int *lMessage, unsigned char lCount)
Называйте меня капитаном очевидность, но та тема по С++, а не по С#.
Carbon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непростая CRC16 (нужна помощь) Georgios Общие вопросы Delphi 5 30.07.2009 15:02