Форум: "Прочее";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
ВнизКонтр.сумма по модулю 2 Найти похожие ветки
← →
GanibalLector © (2006-12-12 21:05) [0]Господа, имеется протокол обмена некоторого устройства, в котором … цитирую :"Последовательность проверки ПП представляет собой контрольную сумму по модулю 2"
На сколько я понимаю, по модулю 2 это исключающее ИЛИ . Или на языке Delphi обычный XOR.
Так вот, подглядел PortMon’ом работу старой утилиты, которую и переделываю.
Привожу пакеты с CRC.
1 пакет)
03 05 00 00 00 00 00 00 00 CRC=06
2 пакет)
0F 25 03 01 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 00 00 CRC= 28
Если с первым пакетом все понятно 3 xor 5 равен 6, то со вторым ну никак после «массового» xor не равно 28.
Какие будут предложения ???
← →
Eraser © (2006-12-12 21:07) [1]> [0] GanibalLector © (12.12.06 21:05)
> Какие будут предложения ???
для посчета контрольной суммы используется не XOR :)
← →
GanibalLector © (2006-12-12 21:10) [2]2 Eraser © (12.12.06 21:07) [1]
>для посчета контрольной суммы используется не XOR :)
А что ??? Я вот так считаю :
function CRC(Line:String):Byte;
var I:Integer;
begin
Result:=0;
for I:=1 to Length(Line) do
Result:=Result xor Ord(Line[I]);
end;
← →
Чапаев © (2006-12-12 21:14) [3]> то со вторым ну никак после «массового» xor не равно 28
Ну как же не равно, если именно равно?
F xor 25=2A
2A xor 3=29
29 xor 1=28
последующий 24-кратный xor с 20 результата не изменит.
← →
Чапаев © (2006-12-12 21:15) [4]> [2] GanibalLector © (12.12.06 21:10)
Фигня. :о) Каждый "байт" занимает два символа строки. Да и ещё и пробел между "байтами". А ты всё гамузом ксоришь.
← →
GanibalLector © (2006-12-12 21:25) [5]2 Чапаев © [3]
Угу...вроде все правильно .
> Каждый "байт" занимает два символа строки. Да и ещё и пробел между "байтами".
Не, я все правильно делал. Типа CRC(Chr($0F)+Chr($25)+...)
← →
tesseract © (2006-12-12 21:29) [6]не верь документации!!!!
я столько этих устройств поюзал :-) Всё может быть врено только не указано КАКИЕ байты посылки в XOR не участвуют.
← →
Чапаев © (2006-12-12 21:32) [7]> Типа CRC(Chr($0F)+Chr($25)+...)
Извращенец. :о) Тогда уж CRC(#$F#$25)
Ещё можно вспомнить о том, что #$F <=> ^O
%-)
← →
GanibalLector © (2006-12-12 21:40) [8]Блин, прошу прощения, все работает.
Из серии заработался ;)
Всем спасибо !!!
← →
GanibalLector © (2006-12-12 21:42) [9]>Извращенец. :о) Тогда уж CRC(#$F#$25)
:) Это я в учебных целях проверки образования CRC.
На самом деле у меня array of Byte
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.052 c