| |
|
|
p.specht
| "Fletcher's Checksum" (aussi que z.B. Adlers Checksum) bildet une positionsabhängige Checksumme - entier im Sinne einer sog. CRC ("Zyklische Redundanz")-somme, allerdings avec viel moins Rechenaufwand. qui nachstehende Algorithmus wurde de John G. Fletcher dans den 1970il-Jahren am Lawrence Livermore Institute entwickelt - pour Atombombentests ...
proc FletcherChecksum :parameters DataMsg$
' sans chacun Gewähr, insb. peut Rechte Dritter bestehen!
var Length_of_Data&=len(DataMsg$)
declare c1&,c2&,c3&, i& ,S1&,S2&,S3&,S4&
whileloop Length_Of_Data&
c1&=c1&+ord(Mid $(DataMsg$,&loop,1))
c1&=c1& & $00ff :c2&=c2&+c1&:c2&=c2& & $00ff
Endwhile :c3&=c2&:c2&=c2&>>4 :c2&=c2& & $0f
si c2&>=$0A :S1&=c2&+ $37 :d'autre :S1&=c2&+$30
endif:c2&=c3& & $0f
si c2&>= $0a:S2&=c2&+ $37 :d'autre :S2&=c2&+ $30
endif:c3&=c1&:c1&=c1&>>4 :c1&=c1& & $0f
si c1&>= $0a :S3&=c1&+ $37 :d'autre :S3&=c1&+ $30
endif :c1&=c3& & $0f
si c1&>=$0a:S4&=c1&+ $37 :d'autre :S4&=c1&+ $30
endif:return chr$(s1&)+chr$(s2&)+chr$(s3&)+chr$(s4&)
endproc
CLS
Selbsttest:
cas FletcherChecksum("5522 18 1137 00 003")<>"1C76":imprimer "Error 1"
cas FletcherChecksum("5522 18 3137 00 003")<>"3278":imprimer "Error 2"
cas FletcherChecksum("5522 18 1130 00 002")<>"E36E":imprimer "Error 3"
cas FletcherChecksum("5522 18 1401 00 001")<>"ED6E":imprimer "Error 4"
cas FletcherChecksum("5522 18 1302 00 003")<>"ED70":imprimer "Error 5"
cas FletcherChecksum("5522 18 1302 00 004")<>"EE71":imprimer "Error 6"
cas FletcherChecksum("5522 18 1302 00 009")<>"F376":imprimer "Error 7"
cas FletcherChecksum("5522 18 3147 00 009")<>"417F":imprimer "Error 8"
cas FletcherChecksum("5522 18 1137 00 004")<>"1D77":imprimer "Error 9"
cas FletcherChecksum("5522 18 3137 00 009")<>"3379":imprimer "Error 10"
cas FletcherChecksum("5522 18 1602 00 000")<>"0870":imprimer "Error 11"
imprimer "\n Fletchertest 10 ergibt korrekterweise";
imprimer " ";FletcherChecksum("5522 18 3137 00 009");" statt '3379'."
imprimer " Es pourrait sich um une Eingabefehler chez den Testwerten agir!"
beep: imprimer "\n Fletcher-Test done.\n"
waitinput:FIN
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 19.05.2021 ▲ |
|
|
|