1

我正在寻找正确的解决方案来解码 Code 3 of 9 条形码格式。我在维基百科上找到的内容如下:

每个字符由九个元素组成:五个条形和四个空格。每个字符的九个元素中的三个是宽的(二进制值 1),六个元素是窄的(二进制值 0)。-维基百科

我的问题如下:

  1. “元素”是指一个小节吗?
  2. 一个 Code 39 位的二进制输出是 9 位还是 12 位?

我的假设如下:

  1. 没有校验位
  2. 我们不处理完整的 ASCII 码 39

假设我们有以下条形码:

在此处输入图像描述

让我们关注起始字符*。我可以想到三种不同的方法来将此字符解码为二进制:

  1. 假设黑条是1,白条是0
    • 1001 0110 1101– 12 位
  2. 假设细线是a 0,粗线是1
    • 0100 1010 1– 9 位
  3. 假设细线是a 0,粗线是11
    • 0110 0110 1101– 12 位

哪种解码方法是正确的?如果它们都没有,那么请让我知道正确的方法是什么。

4

2 回答 2

1

我使用 16 位来表示“9 元素”代码 39 字符。例如,在我的软件中,星号 ('*') 看起来像这样的 '1000101110111010'。就元素而言,它们的意思是条形和空格,交替出现。假设条形和空格的宽窄比为 2:1,您可能会发现难以阅读代码。

于 2015-02-03T14:38:04.163 回答
0

他们都没有。

使用代码 3 of 9,代码本身由九个“元素”组成——五个条形和四个空格加上一个额外的空格作为字符间的间隙。条或空间“元素”可以是窄的或宽的;3 个是宽的,6 个是窄的。“第十个”元素(字符间距)总是窄的(IIRC)。代码交替 bar-space-bar-space...,例如编码是 nWWnnWnnnN。N将其转换为二进制,您将得到一个与 ASCII 无关的 9 位数字(忽略字符间空间)。然后,这些数字中的每一个都由阅读器映射到 ASCII。

一些模式是为方向信息保留的,因此如果条形码被“颠倒”读取,则可以确定正确的结果,否则读取的字符串会出现乱码,因为前一个字符串nWWnnWnnnN将被读取为NnnnWnnWWn完全不同的字符。

有一个 Mod-43 校验位是可选的。

于 2015-01-15T23:43:25.800 回答