Показано с 1 по 9 из 9

Тема: Контрольная сумма FCS-16

  1. #1
    Member
    Регистрация
    29.09.2004
    Сообщений
    160
    Спасибо
    0
    Благодарностей: 2 : 2

    Контрольная сумма FCS-16

    Эта тема здесь уже затрагивалась, народ ссылается на RFC1662. Однако мне по этой доке удается корректно считать CRC только для оного инф. байта. При попытке засунуть туда последовательность байт, ничего путного не получается. Может, кому-то удалось правильно это дело обсчитать?

  2. #2
    Member
    Регистрация
    20.09.2004
    Сообщений
    391
    Спасибо
    4
    Благодарностей: 12 : 6
    Я по ней писал, все нормально работает

  3. #3
    Member
    Регистрация
    29.09.2004
    Сообщений
    160
    Спасибо
    0
    Благодарностей: 2 : 2
    Я в С++ не очень, перевел на паскаль, но вроде бы корректно.

    u32 pppfcs32(fcs, cp, len)
    register u32 fcs;
    register unsigned char *cp;
    register int len;
    {
    ASSERT(sizeof (u32) == 4);
    ASSERT(((u32) -1) > 0);
    while (len--)
    fcs = (((fcs) >> 8) ^ fcstab_32[((fcs) ^ (*cp++)) & 0xff]);

    return (fcs);


    Function fcs16(rfc:word; Pkt: array of byte): word;
    var i: word;

    begin
    for i:= 0 to High(Pkt) do
    fcs:= (fcs shr 8) xor FcsTab[(fcs xor Pkt[i]) and $ff];
    fcs16:= fcs;
    end;

    Потом результат xor $ffff.

    Нач. маска $ffff.

    Один байт суешь - все ок, два - уже лажа.

    Че не так сделал?

  4. #4
    Member
    Регистрация
    20.09.2004
    Сообщений
    391
    Спасибо
    4
    Благодарностей: 12 : 6
    Хотя была была похожая трабла, дело в том я переписывал все это дело под VBA и сначала не совсем корректно считал значения CRC таблицу. Короче проверь все ли табличные значения правильно считаются.

  5. #5
    Member
    Регистрация
    29.09.2004
    Сообщений
    160
    Спасибо
    0
    Благодарностей: 2 : 2
    Проверил, вроде таблица как в доке. Маразм. Осталось с++ установить и передрать1:1

  6. #6
    Member
    Регистрация
    20.09.2004
    Сообщений
    391
    Спасибо
    4
    Благодарностей: 12 : 6
    Там по доке еще используется полином с начальным значением 0x8404, у тебя я его что-то не наблюдаю

  7. #7
    Member
    Регистрация
    29.09.2004
    Сообщений
    160
    Спасибо
    0
    Благодарностей: 2 : 2
    Так вроде этот полином используется для формирования таблицы? А формирование я здесь и не приводил. Поэтому и полинома нет

  8. #8
    Member
    Регистрация
    20.09.2004
    Сообщений
    391
    Спасибо
    4
    Благодарностей: 12 : 6
    мне кажется там цикл должен всетаки с 1 начинаться

  9. #9
    Member
    Регистрация
    29.09.2004
    Сообщений
    160
    Спасибо
    0
    Благодарностей: 2 : 2
    Спасибо за ответы, ошибку нашел. Она, как водится, к теме отношения не имела. Все работает.

Похожие темы

  1. Как вычисляеться контрольная цифра?
    от Петрович в разделе SIM-Card
    Ответов: 11
    Последний ответ: 26.05.2007, 04:32
  2. контрольная сумма IMSI
    от _Vladdd в разделе SIM-Card
    Ответов: 11
    Последний ответ: 09.03.2006, 13:34
  3. Ответов: 0
    Последний ответ: 10.08.2005, 11:22

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
  Рейтинг@Mail.ru