首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将UPC-E条形码转换为UPC-A条形码?

如何将UPC-E条形码转换为UPC-A条形码?
EN

Stack Overflow用户
提问于 2015-07-21 12:26:30
回答 4查看 6.1K关注 0票数 5

将零抑制的八位GTIN-12标识符(表示为UPC-E条形码)转换为完整的12位版本的算法是什么,如UPC-A条码所示?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-21 12:26:30

在UPC和UPC-A之间转换GTIN-12标识符的算法可以从以下模式映射中最清楚地看到:

代码语言:javascript
复制
SabcdeNX ⟺ SabN0000cdeX  :  0≤N≤2
Sabcde3X ⟺ Sabc00000deX
Sabcde4X ⟺ Sabcd00000eX
SabcdeNX ⟺ Sabcde0000NX  :  5≤N≤9

在上面的S是数字系统(0或1),X是检查数字。

在伪代码中,如下所示:

代码语言:javascript
复制
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]
票数 14
EN

Stack Overflow用户

发布于 2020-09-30 19:49:06

这重复了@Terry用Java编写的答案中的算法。

代码语言:javascript
复制
switch (data.charAt(6)) {
    case '0':
    case '1':
    case '2': {
        data = data.substring(0, 3) + data.charAt(6) + "0000" + data.substring(3, 6) + data.charAt(7);
        break;
    }
    case '3': {
        data = data.substring(0, 4) + "00000" + data.substring(4, 6) + data.charAt(7);
        break;
    }
    case '4': {
        data = data.substring(0, 5) + "00000" + data.charAt(5) + data.charAt(7);
        break;
    }
    case '5':
    case '6':
    case '7':
    case '8':
    case '9': {
        data = data.substring(0, 6) + "0000" + data.charAt(6) + data.charAt(7);
        break;
    }
}
票数 3
EN

Stack Overflow用户

发布于 2021-09-07 02:21:02

下面是一个被修正的C#版本。以及一些测试用例。

代码语言:javascript
复制
public string Expand_UPCE_to_UPCA_GTIN12(string upce)
{
    return upce[6] switch
    {
        '0' or '1' or '2' => $"{upce[..3]}{upce[6]}0000{upce[3..6]}{upce[7]}",
        '3' => $"{upce[..4]}00000{upce[4..6]}{upce[7]}",
        '4' => $"{upce[..5]}00000{upce[5]}{upce[7]}",
        _ => $"{upce[..6]}0000{upce[6..]}",
    };
}

Console.WriteLine($"Test A: {Expand_UPCE_to_UPCA_GTIN12("02345673")} becomes 023456000073");
Console.WriteLine($"Test B: {Expand_UPCE_to_UPCA_GTIN12("02345147")} becomes 023450000017");
Console.WriteLine($"Test C: {Expand_UPCE_to_UPCA_GTIN12("08679339")} becomes 086700000939");
Console.WriteLine($"Test D: {Expand_UPCE_to_UPCA_GTIN12("06397126")} becomes 063200009716");
Console.WriteLine($"Test E: {Expand_UPCE_to_UPCA_GTIN12("07832309")} becomes 078000003239"); // Diet Dr Pepper 12 fl oz can 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31539005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档