Hallo,
ich habe mit den CRCStreamfunktionen gearbeitet und bin dabei über eine Frage gestolpert.
Dabei ist folgendes CRC Verfahren zu implementieren:
CRC16 CCITT der Startwert ist dabei $FFFF.
Wenn ich nun den Stream mit CRCStreaminit($0810) initialisiere und die ersten beiden Bytes im Stream mit XOR $FF verknüpfe, dann erhalte ich den CRC-Wert wie erwartet. Damit alles okay.
Nun die Frage: Kann ich den Startwert so verändern, dass die XOR-Verknüpfung entfallen kann?
Ich hatte mit $FFFF als Startwert gearbeitet, funktionierte aber nicht.
Eine andere Frage ist: Erreiche ich einen Geschwindigkeitsvorteil wenn ich die CRC16 über eine lookup table implementiere? Hat jemand damit Erfahrungen gesammelt?
Programmbeispiel:
CRCStreamInit($0810);
data[1]:=$01 xor $FF;
data[2]:=$00 xor $FF;
data[3]:=$C0;
crc:=CRCStreamADDP(@data[1],3);
Vielleicht habe ich auch den Wert $0810 auch nicht richtig verstanden, ich würde mich freuen wenn mir jemand auf die Sprünge helfen kann.
Danke!
ich habe mit den CRCStreamfunktionen gearbeitet und bin dabei über eine Frage gestolpert.
Dabei ist folgendes CRC Verfahren zu implementieren:
CRC16 CCITT der Startwert ist dabei $FFFF.
Wenn ich nun den Stream mit CRCStreaminit($0810) initialisiere und die ersten beiden Bytes im Stream mit XOR $FF verknüpfe, dann erhalte ich den CRC-Wert wie erwartet. Damit alles okay.
Nun die Frage: Kann ich den Startwert so verändern, dass die XOR-Verknüpfung entfallen kann?
Ich hatte mit $FFFF als Startwert gearbeitet, funktionierte aber nicht.
Eine andere Frage ist: Erreiche ich einen Geschwindigkeitsvorteil wenn ich die CRC16 über eine lookup table implementiere? Hat jemand damit Erfahrungen gesammelt?
Programmbeispiel:
CRCStreamInit($0810);
data[1]:=$01 xor $FF;
data[2]:=$00 xor $FF;
data[3]:=$C0;
crc:=CRCStreamADDP(@data[1],3);
Vielleicht habe ich auch den Wert $0810 auch nicht richtig verstanden, ich würde mich freuen wenn mir jemand auf die Sprünge helfen kann.
Danke!