| |
|
|
p.specht
| "Fletcher's Checksum" (ebenso como z.B. Adlers Checksum) bildet una positionsabhängige Checksumme - bastante en el Sinne uno sog. CRC ("Zyklische Redundanz")-Summe, allerdings con viel weniger Rechenaufwand. Der nachstehende Algorithmus wurde de John G. Fletcher en el 1970él-Jahren al Lawrence Livermore Institute entwickelt - para Atombombentests ...
proc FletcherChecksum :parámetros DataMsg$
' Ohne jede Gewähr, insb. puede Rechte Dritter bestehen!
var Length_of_Data&=len(DataMsg$)
declarar c1&,c2&,c3&, i& ,S1&,S2&,S3&,S4&
whileloop Length_Of_Data&
c1&=c1&+ord(Mid$(DataMsg$,&bucle,1))
c1&=c1& & $00ff :c2&=c2&+c1&:c2&=c2& & $00ff
EndWhile :c3&=c2&:c2&=c2&>>4 :c2&=c2& & $0f
if c2&>=$0A :S1&=c2&+ $37 :más :S1&=c2&+$30
endif:c2&=c3& & $0f
if c2&>= $0a:S2&=c2&+ $37 :más :S2&=c2&+ $30
endif:c3&=c1&:c1&=c1&>>4 :c1&=c1& & $0f
if c1&>= $0a :S3&=c1&+ $37 :más :S3&=c1&+ $30
endif :c1&=c3& & $0f
if c1&>=$0a:S4&=c1&+ $37 :más :S4&=c1&+ $30
endif:volver chr$(s1&)+chr$(s2&)+chr$(s3&)+chr$(s4&)
ENDPROC
CLS
Selbsttest:
caso FletcherChecksum("5522 18 1137 00 003")<>"1C76":imprimir "Error 1"
caso FletcherChecksum("5522 18 3137 00 003")<>"3278":imprimir "Error 2"
caso FletcherChecksum("5522 18 1130 00 002")<>"E36E":imprimir "Error 3"
caso FletcherChecksum("5522 18 1401 00 001")<>"ED6E":imprimir "Error 4"
caso FletcherChecksum("5522 18 1302 00 003")<>"ED70":imprimir "Error 5"
caso FletcherChecksum("5522 18 1302 00 004")<>"EE71":imprimir "Error 6"
caso FletcherChecksum("5522 18 1302 00 009")<>"F376":imprimir "Error 7"
caso FletcherChecksum("5522 18 3147 00 009")<>"417F":imprimir "Error 8"
caso FletcherChecksum("5522 18 1137 00 004")<>"1D77":imprimir "Error 9"
caso FletcherChecksum("5522 18 3137 00 009")<>"3379":imprimir "Error 10"
caso FletcherChecksum("5522 18 1602 00 000")<>"0870":imprimir "Error 11"
imprimir "\n Fletchertest 10 ergibt korrekterweise";
imprimir " ";FletcherChecksum("5522 18 3137 00 009");" en lugar de '3379'."
imprimir " Lo podría son una Eingabefehler en el Testwerten handeln!"
beep: imprimir "\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 ▲ |
|
|
|