Code16K
Code 16K is a stacked, multi-row symbology developed in 1989 as an easier-to-print and decode alternative to Code 49, built on the structure of Code 128.
Code 16K was developed by Ted Williams in 1989 to provide a multi-row symbology that was simpler to print and decode. Williams also developed Code 128, and the structure of 16K is based on Code 128. Not coincidentally, 128 squared happens to equal 16,000, or 16K for short. Code 16K resolved an inherent problem with Code 49, whose structure requires a large amount of memory for encoding and decoding tables and algorithms. 16K is a stacked symbology.
Each Code 16K symbol contains from 2 to 16 rows, with 5 ASCII characters per row. In addition, up to 107 16-row symbols can be concatenated together, allowing up to 8,025 ASCII characters, or 16,050 numeric digits, to be encoded. In extended mode, the first three characters in each 16-row symbol define the mode character, the position of the 16-row symbol within the block, and the total number of symbols in the block.
The code is a continuous, variable-length symbology that can encode the complete 128-character ASCII set. The minimum value of the x-dimension is 7.5 mils for a symbol to be read by an unfamiliar reader. Minimum bar height is 8 times the x-dimension. The maximum data density is 208 alphanumeric characters per square inch, or 417 numeric digits per square inch, when the symbol is printed at 7.5 mils. In the health care industry, for example, a Code 16K symbol printed with a 7.5-mil x-dimension, including a flag character, a 10-digit NDC number, a 5-digit expiration date, and a 10-character alphanumeric lot code, would fit in a symbol measuring only .35 by .61 inches.
Code 16K symbols can be read by modified moving-beam laser or CCD scanners. Rows can be scanned in any order; once the last row has been scanned, the bar code reader automatically puts the information in the proper sequence. Labels can be printed using standard printing technologies.
Code 16K is interesting because it is essentially a series of reverse-video Code 128 rows stacked on top of one another, with bearer bars, start/stop characters, a start symbol, padding, and check symbols added in.
| Mode | Starting Code Set | Starting Shift Mode |
| 0 | A | none |
| 1 | B | none |
| 2 | C | none |
| 3 | B | FNC1 |
| 4 | C | FNC1 |
| 5 | C | none |
| 6 | C | none |
FNC1, or "function 1," means that the following data is to be interpreted as a UPC would be. 1SB and 2SB stand for "single-shift B" and "double-shift B," meaning that the next 1 or 2 characters, respectively, come from character set B. FNCs and Shifts are also defined within the character set.
A Code 16K block may contain up to 16 rows, separated by horizontal bearer bars. The top and bottom of the symbol have longer bearer bars to provide leading and trailing quiet zones. Each row has its own start and stop character and contains 5 symbols. PAD characters must be inserted where necessary to make a row contain 5 symbols.
There are 2 checksums at the end of the code, calculated by weighting the sum of the values of each character, including the start character.
The first check symbol starts weighting at 2, and the second starts weighting at 1. Next, take the modulo 107 of the sum. So, if the character values were 22, 10, 15, 20, the two checksums would be:
(2*22 + 3*10 + 4*15 + 5*20) % 107
(1*22 + 2*10 + 3*15 + 4*20) % 107
For more information visit www.spatula.net.