Wie wird die Code 128 Prüfziffer berechnet?

Code 128 verwendet ein einfaches Modulo 103 Prüfziffernverfahren. Jedem Zeichen des Codes ist ein Wert von 0-102 zugeordnet. Die Zeichen eines Symbols werden aufsummiert, ganzzahlig durch 103 geteilt, der Rest ist der Wert der Prüfziffer. Jedes Zeichen des Codes kann Prüfziffer sein, also auch Buchstaben oder Sonder- bzw. nicht-druckbare Zeichen. Aus diesem Grund wird die Prüfziffer i.A. nicht mit dem lesbaren Text angezeigt. Die Berechnung beginnt mit dem Startzeichen, das Stopzeichen wird bei der Berechnung nicht berücksichtigt.

Prüfziffernfunktion in C, Quellcode:

unsigned char calculateChecksum(unsigned char *data, int len)
{
  int sum = *data - 32; // prime with start character
  for(int i = 1;i<len;i++)
  {
    sum += i * indexFromCodeword(*(data + i));
  }
  return sum % 103 + 32;
}

Die Funktion indexFromCodeword holt den numerischen Wert aus einer Tabelle. Hierzu kann die Bitmustertabelle von Code 128 verwendet werden.

Hinweis: Alle Softmatic Anwendungen, die Code 128 generieren, erzeugen die Prüfziffer automatisch.