Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648

Подсчёт контрольной суммы

15.11.2019, 11:23. Показов 3771. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите перевести.
На СИ это выглядит так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//CRC-16-CCITT, Образующий многочлен = 0x1021
int CRCode(unsigned char* msg, unsigned short len , unsigned short skip)
{
    unsigned short j, crc = 0;
 
    msg+=skip;  // Пропустим первые skip байтов массива (DLE 10h и управляющий код 01h)
    len-=skip;  // Уменьшим указанную длину массива на skip пропущенных байтов
    // Для каждого байта символьного массива:
    while(len-- > 0)   // это можно записать так: for (int i=len; i>0; i--)
    {
        crc = crc ^ (unsigned short)*msg++ << 8;
        for(j=0; j<8; j++)
        {
            if(crc & 0x8000) crc = (crc << 1) ^ 0x1021;
            else crc <<= 1;
        }
    }
    return crc;
}
Применяется так:
C++
1
int crc = CRCode(Command, lenCommand, 2);
где Command это глобальная переменная:
C++
1
unsigned char Command[BUFCOMMANDSIZE]={0};
lenCommand - длина массива в байтах.
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2019, 11:23
Ответы с готовыми решениями:

Подсчет суммы
Написал программу, но когда нажимаешь да, то суммы нету, когда нет то он считает сумму. Может где допустил ошибку? Заранее спасибо. ...

Подсчет суммы в мемо
В мемо содержатся и буквы, и цифры в столбик. к примеру: Цирк=120 Экскурсия=1000 Мне нужно посчитать сумму(т.е чтоб в этом же мемо...

Подсчет суммы по выбранным колонкам в таблице
Ребят такой вопрос, в общем у меня есть таблица &quot;Препараты&quot; которая состоит из следующих колонок: код препарата, наименование, упаковка,...

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33412 / 21522 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
15.11.2019, 13:56
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

Ну, например вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function CRCode(const msg : array of Byte; len, skip : Byte) : Integer;
var
  i, j : byte;
  ix : byte; // это - текущий индекс для массива msg: индекс элемента, с которым работаем в данный момент
begin
  result := 0;
  ix := skip;      // Пропустим первые skip байтов массива (DLE 10h и управляющий код 01h)
  Dec(len, skip);  // Уменьшим указанную длину массива на skip пропущенных байтов
  // Для каждого байта символьного массива:
  for i := len downto 1 do
  begin
    Result := Result xor (msg[ix] shl 8); Inc(ix); // обработали элемент, увеличили индекс - все просто
    for j := 0 to 7 do
    begin
        if Result and $8000 <> 0 then Result := (Result shl 1) xor $1021
        else Result := Result shl 1;
    end;
  end;
end;
, хотя зачем самому писать CRC16, когда в FPC есть готовый модуль для вычисления CRC32 (так и называется, CRC, достаточно добавить его в uses и работать с ним)?
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
15.11.2019, 14:06  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
готовый модуль
Uses CRC подключил. Но ведь способов подсчёта КС довольно много. Как применить к моему случаю(CRC-16-CCITT, Образующий многочлен = 0x1021)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33412 / 21522 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
15.11.2019, 16:57
Цитата Сообщение от jkrnd Посмотреть сообщение
Как применить к моему случаю(CRC-16-CCITT
Э, нет. Этот модуль считает только CRC32. Если нужны другие - то либо искать другие пакеты, которые это умеют, либо считать самостоятельно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2019, 16:57
Помогаю со студенческими работами здесь

Подсчет суммы цифр n-значного числа
Здравствуйте.Помогите написать в Lazarus программу,которая считала бы сумму цифр n-значного числа.

Stringgrid не изменяет свой размер при изменении n и как сделать подсчет суммы и количества
Помогите с кодом . Stringgrid не изменяет свой размер при изменении n и как сделать подсчет суммы и количества на определенном промежутке? ...

Подсчет контрольной суммы
С массивами, состоящими из скромных значений, работает, но вот с такими числами - нет . Правильный ответ : 5249408, а у меня : 3259096...

Подсчёт контрольной суммы
Приветствую! Необходимо подсчитать 32-битную сумму для файла checksum = word1 + word2 + ... + wordN. Я недавно читал про little-...

Подсчет CRC16 контрольной суммы
Ищу написанную на VB (!) программу подсчета CRC16 контрольной суммы или соответствующий API.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru