ADLER32: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 8: Line 8:


{{PageParameters}}
{{PageParameters}}
* {{Parameter|chksum~&}} is the [[_UNSIGNED]] [[LONG]] checksum returned (zero, if the given {{Parameter|dataString$}} was empty).
* {{Parameter|chksum~&}} is the [[_UNSIGNED]] [[LONG]] checksum returned (one (1), if the given {{Parameter|dataString$}} was empty).
* {{Parameter|dataString$}} is any literal or variable [[STRING]] to build the checksum from.
* {{Parameter|dataString$}} is any literal or variable [[STRING]] to build the checksum from.


Line 17: Line 17:
** All double bit flips will be detected.
** All double bit flips will be detected.
** Burst errors up to seven bits are always detected.
** Burst errors up to seven bits are always detected.
* For more informations have a closer look at [file:///C:/Users/Herzlich%20Willkommen/Downloads/337373-001us-intelqatdatacompressionintegritywhitepaper.pdf Chapter 5 here].
* For more informations have a closer look at [https://www.intel.com/content/www/us/en/content-details/709921/intel-quickassist-technology-intel-qat-using-adler-32-checksum-and-crc32-hash-to-ensure-data-compression-integrity.html Chapters 5-7 here].
 
 
{{PageAvailability}}
<!-- QB64 = a version or none, QBPE = a version or all, Platforms = yes or no -->
<gallery widths="48px" heights="48px" mode="nolines">
File:Qb64.png|'''none'''
File:Qbpe.png|'''v3.12.0'''
File:Apix.png
File:Win.png|'''yes'''
File:Lnx.png|'''yes'''
File:Osx.png|'''yes'''
</gallery>
<!-- Additional availability notes go below the gallery -->




Line 36: Line 49:
{{Cl|END}}
{{Cl|END}}
{{CodeEnd}}
{{CodeEnd}}
{{Small|Example by RhoSigma}}
{{OutputStart}}
{{OutputStart}}
Correct Text: QB64 Phoenix Edition
Correct Text: QB64 Phoenix Edition
Line 46: Line 60:


{{PageSeeAlso}}
{{PageSeeAlso}}
* [https://qb64phoenix.com/forum/showthread.php?tid=2681 Featured in our "Keyword of the Day" series]
* [[_DEFLATE$]], [[_INFLATE$]]
* [[_DEFLATE$]], [[_INFLATE$]]
* [[_CRC32]], [[_MD5$]]
* [[_CRC32]], [[_MD5$]]

Latest revision as of 22:39, 25 May 2024

The _ADLER32 function returns the Adler-32 checksum of any arbitrary string.


Syntax

chksum~& = _ADLER32(dataString$)


Parameters

  • chksum~& is the _UNSIGNED LONG checksum returned (one (1), if the given dataString$ was empty).
  • dataString$ is any literal or variable STRING to build the checksum from.


Description

  • The Adler-32 checksum uses a relative simple but very fast algorithm, it has the following known properties:
    • All single bit flips will be detected.
    • All double bit flips will be detected.
    • Burst errors up to seven bits are always detected.
  • For more informations have a closer look at Chapters 5-7 here.


Availability


Examples

Example
Showing how the Adler-32 checksum can detect differences in two strings.
'this is the correct text
t$ = "QB64 Phoenix Edition"
PRINT "Correct Text: "; t$
PRINT "Adler-32 Sum: "; RIGHT$("00000000" + HEX$(_ADLER32(t$)), 8)
PRINT
'this text differs in just 1 bit from the above, by changing 4 to 5
'ASC("4") = 52 = &B00110100
'ASC("5") = 53 = &B00110101
t$ = "QB65 Phoenix Edition"
PRINT "Mangled Text: "; t$
PRINT "Adler-32 Sum: "; RIGHT$("00000000" + HEX$(_ADLER32(t$)), 8)
END
Example by RhoSigma
Correct Text: QB64 Phoenix Edition
Adler-32 Sum: 41F806E5

Mangled Text: QB65 Phoenix Edition
Adler-32 Sum: 420906E6


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link