Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C Pascal на С++, Подсчет контрольной суммы 
:(
    Опции темы
debil
Дата 12.12.2007, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.12.2007

Репутация: нет
Всего: нет



Есть железяка. В описание указано как считать контрольную сумму.
двоичное дополнение суммы с циклическим переносом (в том числе последним переносом) всех байтов сообщения,  кроме байта контрольной суммы

Нашел пример на Pascal  подсчета контрольной суммы

function GetCtrSum (Data : PByteArray; const Size : WORD) : byte;
  function AddOne (Val : word) : word;
  begin
    while Val > 256 do begin
      WordRec (Val).Hi := 0; Val := Val + 1;
    end;
    result := Val;
  end;

var I, R : word; x : byte;
begin
  R := 0;
  for I := 0 to Size - 1 do R := AddOne (R + Data^[I]);
  x := R xor $FF;
  R := AddOne(x + 1);
  result := WordRec®.Lo;
end;
 
Помогите переделать на С++
 smile 


Это сообщение отредактировал(а) debil - 13.12.2007, 20:10
PM MAIL   Вверх
bsa
Дата 12.12.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Код
unsigned short AddOne(unsigned short val)
{
    for(;(val > 256); ++val)
         val &= 0x00FF;
    return val;
}
unsigned char GetCtrSum(const unsigned char *Data, unsigned short Size)
{
       unsigned short i, R;
       for(i = 0; i < Size; ++i)
            R = AddOne(R + Data[i]);
       return (unsigned char)(AddOne((R ^ 0xFF) + 1) & 0x00FF);
}


Это сообщение отредактировал(а) bsa - 13.12.2007, 22:40
PM   Вверх
debil
Дата 12.12.2007, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.12.2007

Репутация: нет
Всего: нет



Спасибо! smile 
PM MAIL   Вверх
JackYF
Дата 13.12.2007, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



debil, помечай тему решённой.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
debil
Дата 13.12.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.12.2007

Репутация: нет
Всего: нет



Для тех кто еще заинтересуется....
работает с указателем

unsigned char GetCtrSum(unsigned char *Data, unsigned short Size)

Это сообщение отредактировал(а) debil - 13.12.2007, 20:01
PM MAIL   Вверх
THandle
Дата 13.12.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: нет
Всего: 372



Цитата(JackYF @  13.12.2007,  00:10 Найти цитируемый пост)
debil, помечай тему решённой.

и ещё привыкай пользоваться кнопкой "код" smile 

Это сообщение отредактировал(а) THandle - 13.12.2007, 20:03
PM   Вверх
bsa
Дата 13.12.2007, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



debil, точно у меня была ошибка - исправил.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.