Code 39 Mod 43 Checksum

I needed to do some work with barcodes recently, specifically I needed to handle Code 39 Mod 43 barcodes.

Given a barcode string this function should return the relevant Mod 43 checksum.

  1. public class Code39
  2.     {
  3.         ///<summary>
  4.         ///Returns the expected checksum for the specified barcode
  5.         ///</summary>
  6.         ///<param name="barcode"></param>
  7.         ///<returns></returns>
  8.         public string ValidateMod43(string barcode)
  9.         {
  10.             int subtotal = 0;
  11.             const string charSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%";
  12.  
  13.             for (int i = 0; i < barcode.Length; i++)
  14.             {
  15.                 subtotal += charSet.IndexOf(barcode.Substring(i, 1));
  16.             }
  17.  
  18.             return charSet.Substring(subtotal%43, 1);
  19.         }
  20.     }

I adapted this from a VBA script so if there’s a better way of doing it let me know!