crc16(3)



crc16(3tcl)                Cyclic Redundancy Checks                crc16(3tcl)

______________________________________________________________________________

NAME
       crc16 - Perform a 16bit Cyclic Redundancy Check

SYNOPSIS
       package require Tcl  8.2

       package require crc16  ?1.1.3?

       ::crc::crc16  ?-format format? ?-seed value? ?-implementation procname?
       -- message

       ::crc::crc16 ?-format format? ?-seed value? ?-implementation  procname?
       -filename file

       ::crc::crc-ccitt  ?-format format? ?-seed value? ?-implementation proc-
       name? -- message

       ::crc::crc-ccitt ?-format format? ?-seed value? ?-implementation  proc-
       name? -filename file

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname?
       -- message

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname?
       -filename file

______________________________________________________________________________

DESCRIPTION
       This  package  provides a Tcl-only implementation of the CRC algorithms
       based   upon   information    provided    at    http://www.microconsul-
       tants.com/tips/crc/crc.txt There are a number of permutations available
       for calculating CRC checksums and this package can handle all of  them.
       Defaults are set up for the most common cases.

COMMANDS
       ::crc::crc16  ?-format format? ?-seed value? ?-implementation procname?
       -- message

       ::crc::crc16 ?-format format? ?-seed value? ?-implementation  procname?
       -filename file

       ::crc::crc-ccitt  ?-format format? ?-seed value? ?-implementation proc-
       name? -- message

       ::crc::crc-ccitt ?-format format? ?-seed value? ?-implementation  proc-
       name? -filename file

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname?
       -- message

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname?
       -filename file
              The  command takes either string data or a file name and returns
              a checksum value calculated using the CRC algorithm. The command
              used  sets up the CRC polynomial, initial value and bit ordering
              for the desired standard checksum  calculation.  The  result  is
              formatted using the format(3tcl) specifier provided or as an un-
              signed integer (%u) by default.

              A number of common polynomials are in use with the CRC algorithm
              and  the  most commonly used of these are included in this pack-
              age. For convenience each of these has a command  alias  in  the
              crc namespace.

              It is possible to implement the CRC-32 checksum using this crc16
              package as the implementation is sufficiently generic to  extend
              to  32 bit checksums. As an example this has been done already -
              however this is not the fastest method to implement  this  algo-
              rithm in Tcl and a separate crc32 package is available.

OPTIONS
       -filename name
              Return a checksum for the file contents instead of for parameter
              data.

       -format string
              Return the checksum using an alternative format template.

       -seed value
              Select an alternative seed value for the  CRC  calculation.  The
              default  is 0 for the CRC16 calculation and 0xFFFF for the CCITT
              version.  This can be useful for calculating the  CRC  for  data
              structures  without  first converting the whole structure into a
              string. The CRC of the previous member can be used as  the  seed
              for  calculating the CRC of the next member. It is also used for
              accumulating a checksum from fragments of a  large  message  (or
              file)

       -implementation procname
              This hook is provided to allow users to provide their own imple-
              mentation (perhaps a C compiled extension). The procedure  spec-
              fied  is called with two parameters. The first is the data to be
              checksummed and the second is the seed value. An integer is  ex-
              pected as the result.

              The  package provides some implementations of standard CRC poly-
              nomials for the XMODEM, CCITT and the usual CRC-16 checksum. For
              convenience,  additional  commands  have been provided that make
              use of these implementations.

       --     Terminate option processing. Please note that using  the  option
              termination  flag is important when processing data from parame-
              ters. If the binary data looks like one  of  the  options  given
              above  then the data will be read as an option if this marker is
              not included.  Always use the -- option termination flag  before
              giving the data argument.

EXAMPLES
              % crc::crc16 -- "Hello, World!"
              64077

              % crc::crc-ccitt -- "Hello, World!"
              26586

              % crc::crc16 -format 0x%X -- "Hello, World!"
              0xFA4D

              % crc::crc16 -file crc16.tcl
              51675

AUTHORS
       Pat Thoyts

BUGS, IDEAS, FEEDBACK
       This  document,  and the package it describes, will undoubtedly contain
       bugs and other problems.  Please report such in the category crc of the
       Tcllib  Trackers  [http://core.tcl.tk/tcllib/reportlist].   Please also
       report any ideas for enhancements  you  may  have  for  either  package
       and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the out-
       put of diff -u.

       Note further that  attachments  are  strongly  preferred  over  inlined
       patches.  Attachments  can  be  made  by  going to the Edit form of the
       ticket immediately after its creation, and  then  using  the  left-most
       button in the secondary navigation bar.

SEE ALSO
       cksum(3tcl), crc32(3tcl), sum(3tcl)

KEYWORDS
       checksum,  cksum,  crc, crc16, crc32, cyclic redundancy check, data in-
       tegrity, security

CATEGORY
       Hashes, checksums, and encryption

COPYRIGHT
       Copyright (c) 2002, 2017, Pat Thoyts

tcllib                               1.1.3                         crc16(3tcl)

Man(1) output converted with man2html
list of all man pages