IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> c паскаля на С++, Подсчет контрольной суммы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


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

Нашел пример на 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;

Помогите переделать на С++ nea.gif

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Для железки лучше на Сях, без плюсов... Как-то вот так:

typedef struct _cvt {
unsigned char Lo, Hi;
} CVT;


unsigned add_one(unsigned val) {
while(val > 256) {
((CVT*)&val)->Hi = 0;
val += 1;
}
return val;
}


unsigned char GetCtrSum(unsigned char *data, unsigned size) {
unsigned r;
unsigned char x;

r = 0;
while(size--) {
r = add_one(r + (*data++));
}
x = r ^ 0xff;
r = add_one(x + 1);
return ((CVT*)&r)->Lo;
}



Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 2
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Спасибо volvo good.gif , это то что нужно, завтра встрою в С++Builder nea.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.10.2020 13:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name