ios - 如何将 UPC-A 转换为 UPC-E?

标签 ios objective-c barcode

我们想将 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/

相关文章:

iphone - 我的 View 显示 y20,尽管其框架设置为 y=0。旋转后它会恢复到 y=0

ios - NSXMLParser 解析器 :parseErrorOccurred: not called on iOS 7

javascript - 从 php 中的图像读取/解码条形码

ios - UITextField 不显示键盘语言选择

ios - 如何使 AFNetworking 显示纯 HTTP 响应错误

ios - 具有 NSMutableArray 成员的自定义对象的 NSMutableArray 的深拷贝

iOS:如何制作多列表

c# - 开发有效的条形码系统/代码

php - 在 Code128 条码中编码控制字符

iphone - EGORefreshTableHeaderView 检查连接