Есть железяка. В описание указано как считать контрольную сумму.
двоичное дополнение суммы с циклическим переносом (в том числе последним переносом) всех байтов сообщения, кроме байта контрольной суммы
Нашел пример на 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;
Помогите переделать на С++
c паскаля на С++, Подсчет контрольной суммы |