Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

9.5K
26 января 2007 года
Borgir
97 / / 20.12.2006
Добрый день.
Может кто сталкивался с такими вещами как подсчет контрольной суммы. Алгоритм подсчета такой:

Контрольная сумма (КС) представляет собой дополнение до нечетности суммы по модулю два всех байт запроса или ответа (без байта КС).
КС = FFh * 1-й байт * 2-й байт * … * последний байт
* - сумма по модулю два.

Заранее спасибо.
294
29 января 2007 года
Plisteron
982 / / 29.08.2003
Цитата: Borgir
Добрый день.
Может кто сталкивался с такими вещами как подсчет контрольной суммы. Алгоритм подсчета такой:

Контрольная сумма (КС) представляет собой дополнение до нечетности суммы по модулю два всех байт запроса или ответа (без байта КС).
КС = FFh * 1-й байт * 2-й байт * … * последний байт
* - сумма по модулю два.

Заранее спасибо.


Если я правильно понял алгоритм...

Код:
class CheckSummCounter
{
protected:
    int cs;
public:
    __fastcall CheckSummCounter() { cs = 0xFF; };
    void __fastcall Reset(void)   { cs = 0xFF; };
    void __fastcall Process(void *ProcessBytes, int BytesCount);
    void __fastcall Process(char ProcessByte) { cs ^= (int)ProcessByte; };
    int  __fastcall Done(void) { int x = cs; this->Reset(); return x; };
};

void __fastcall CheckSummCounter::Process(void *ProcessBytes, int BytesCount)
{
    for(int i = 0; i < BytesCount; i++)
        this->Process(((char*)ProcessBytes));
};

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    CheckSummCounter e3;
    e3.Process((void*)(Edit3->Text.c_str()), Edit3->Text.Length());
    AnsiString x;
    Edit2->Text = x.sprintf("%2X",e3.Done());
}
9.5K
29 января 2007 года
Borgir
97 / / 20.12.2006
Спасибо огромное. Все работает.
Просто я в этих бинарных операция вообще ничего не смыслю.
Плюсик за мной :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог