问题
What is the algorithm for converting a zero-suppressed, eight-digit GTIN-12 identifier (represented as a UPC-E barcode) into the full, twelve-digit version as shown in a UPC-A barcode?
回答1:
The algorithm for converting a GTIN-12 identifier between UPC-E and UPC-A representation can be most clearly seen from the following pattern mapping:
SabcdeNX ⟺ SabN0000cdeX : 0≤N≤2
Sabcde3X ⟺ Sabc00000deX
Sabcde4X ⟺ Sabcd00000eX
SabcdeNX ⟺ Sabcde0000NX : 5≤N≤9
In the above S is the number system (either 0 or 1) and X is the check digit.
In pseudo-code it looks like this:
Input: A valid eight-digit UPC-E: Assigned to E[].
Output: PASS: Twelve-digit UPC-A representing the UPC-E.
FAIL: Reason.
if E[0] != {0-1} then FAIL: Invalid number system.
if E[6] == {0-2} then PASS: E[0-2] . E[6] . "0000" . E[3-5] . E[7]
if E[6] == "3" then PASS: E[0-3] . "00000" . E[4-5] . E[7]
if E[6] == "4" then PASS: E[0-4] . "00000" . E[5] . E[7]
if E[6] == {5-9} then PASS: E[0-5] . "0000" . E[6] . E[7]
来源:https://stackoverflow.com/questions/31539005/how-to-convert-a-upc-e-barcode-to-a-upc-a-barcode