прошу:
Код:
procedure AddChecksum(var data:array of char; position: Word);
var
i:Word;
begin
for i := 0 to (position div 4)-1 do
PCardinal(@data[position])^:=PCardinal(@data[position])^ xor PCardinal(@data[i*4])^;
end;
используем так:
Код:
pck:=HexToString('26 00 02 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00');
AddChecksum(pck[3],Length(pck)-8-2);
тут pck это полный пакет от клиента логин серваре дешифрованный отправляемый в качестве запроса на вход на игровой сервер а Length(pck)-8-2 это позиция чексуммы относительно ID пакета (тоесть pck[3])
в результате примера в pck будет - 26 00 02 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00
Добавлено спустя 5 часов 50 минут 33 секунды:
кстати то что ты представила как С++ код скорее всего не с++ а ява так как на яве нельзя манипулировать с памятью как хочется, а на С++ и этот код был бы намного короче)