作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们想将 12 位 UPC-A 转换为 8 位 UPC-E。您能告诉我哪种方法最好,而无需使用我自己的代码进行转换吗?
我有很多公式可以将 8 位 UCC-E 转换为 12 位 UPC-A 但不能反转。
最佳答案
从以下模式映射中可以最清楚地看出用于在 UPC-A 和 UPC-E 表示之间转换 GTIN-12 标识符的算法:
SabN0000cdeX ⟺ SabcdeNX : 0≤N≤2
Sabc00000deX ⟺ Sabcde3X
Sabcd00000eX ⟺ Sabcde4X
Sabcde0000NX ⟺ SabcdeNX : 5≤N≤9
上面的S
是数制,0或者1,X
是校验位。如果 UPC-A 与模式不匹配,则无法将其转换为 UPC-E。
It can be seen that there may be up to four valid UPC-E representations of each UPC-A:
001200000067 ⟺ 00100627 ⟺ 00120637 ⟺ 00120647 ⟺ 00120067.
执行从 UPC-A 到 UPC-E 的一种转换方法的伪代码如下所示:
Input: A valid twelve-digit UPC-A: Assigned to A[].
Output: PASS: Eight-digit UPC-E representing the UPC-A.
FAIL: Reason.
if A[0] != {0-1} then FAIL: Invalid number system.
if A[3] == {0-2} && A[4..7] == "0000" then PASS: A[0..2] . A[8..10] . A[3] . A[11]
if A[4..8] == "00000" then PASS: A[0..3] . A[9..10] . "3" . A[11]
if A[5..9] == "00000" then PASS: A[0..4] . A[10] . "4" . A[11]
if A[6..9] == "0000" && A[10] == {5-9} then PASS: A[0..5] . A[10] . A[11]
otherwise, FAIL: UPC-A not compatible with UPC-E.
关于ios - 如何将 UPC-A 转换为 UPC-E?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31073963/
我是一名优秀的程序员,十分优秀!