|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Max Alekseyev 2:5015/128 21 Jun 2001 11:23:28 To : vafo@dialup.etr.ru Subject : Un_CRC16 , или фиксуатор CRC16 -------------------------------------------------------------------------------- Replying to a message of vafo@dialup.etr.ru to All: ver> Проблема пока только одна - я паскальщик , Так бы сразу и сказал - мне все равно на чем писать, хоть на рексе ;-) ver> в С упёрся первый раз , книжечку читаю :)) ver> Hичего , разберусь ! Лови, не мучайся ;) ===cut===crc16adj.pas=== {&Use32-} Uses SysUtils; var c,c2,p2:word; n,k:longint; s:string; const p:word=$A001; {reversed "8005"} begin writeln('ARC CRC16 Adjuster (c) 2001 by Max Alekseyev'); write('Length of data: '); readln(n); write('Offset to patch: '); readln(k); n := (n-k) shl 3; write('Current CRC16: '); readln(s); c:=StrToInt(s); write('Desired CRC16: '); readln(s); c2:=StrToInt(s); c := c xor c2; p2 := (p shl 1) or 1; while(n>0) do begin if (c and $8000)<>0 then c := (c shl 1) xor p2 else c:=c shl 1; dec(n); end; writeln('XOR masks: ',IntToHex(lo(c),2),' ',IntToHex(hi(c),2)); end. ===cut===crc16adj.pas=== Протокол для того же примера такой: Length of data: 9 Offset to patch: 0 Current CRC16: $bb3d Desired CRC16: $4321 XOR masks: E3 01 Regards, ш.ш Max ~ --- FleetStreet 1.27.3.6 * Origin: Тут где-то вроде душа гуляет, да кровью бродит... (2:5015/128) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/22983b31e741.html, оценка из 5, голосов 10
|