【问题标题】:Number Algorithm for Barcodes [closed]条形码的数字算法[关闭]
【发布时间】:2013-02-05 08:35:38
【问题描述】:

我有这种序列码,应该作为条形码打印在身份证上,但问题是这些数字的条形码大于身份证宽度。

  • 9913010001CHEREV0215
  • 9913010002CHEREV0215
  • 9913010003CHEREV0215
  • 9913010004CHEREV0215

有没有可能通过使用算法生成固定位数来减少位数,

例如,上面的数字有 20 个字符,使用算法可以减少到 10 个字符。

不仅我需要从上面的条形码(10个字符代码)中反转原始代码(20个字符)。

是否有任何算法可以从 C# 中实现这一点?

【问题讨论】:

  • 最好使用较小的条形码字体...(较细的线条 --> 较小的条形码)
  • CHEREV0215 部分是否不变?如果是这样,您可以删除它,条形码编号将只是前 10 位数字。
  • 需要更多关于您的号码如何变化以及什么是恒定的信息。
  • 您可以按照@RB 的建议执行操作,并在代码中查找常量并将其删除。如果您正在寻找一种哈希算法来减小字符串的大小,恐怕它们只是一种方法。因此,尽管它们会减小字符串的大小,但您将无法取回原始字符串,因此这不是一个选择。
  • CHEREV0215 不是常量,而是批处理代码。前两位数字是研究所 ID。然后是时间戳(年/月)和个人身份证号(4位),最后是批号(10位)

标签: c# algorithm barcode


【解决方案1】:

条形码背后并没有真正的算法。大多数条形码只是一系列行,其中每对行代表一个字符。条形码通常是通过以特殊的条形码字体打印文本来获取的。

打印更小
您可以将其打印得更小,也可以使用不同类型的条形码。但请注意,并非所有类型的条形码都支持所有这些字符。有些支持整个字母表,而有些则只支持数字。

此外,您可以打印的尺寸也有限制。对于大多数条码,都有关于最小尺寸、最小打印分辨率和需要在条码周围打开的最小空白量的官方指南。

低于这些限制会影响条形码的可读性,使使用它们的人更难。但是你可以去掉一两毫米的高度,如果你的纸张质量好,打印分辨率足够高,你可以去掉一点。

减少字符串长度
减少字符串的长度是可能的,但请记住您cannot shorten every 20 byte string to 10 bytes。如果您对字符串有特定的了解,则可以使用它。例如,如果“CHEREV”是一个常数部分,人们可能想知道它是否应该是条形码的一部分。 [编辑] 最初我忽略了你说它不是恒定的评论。

仅限数字
字母条形码具有更多字符,因此通常更宽。如果您可以将批次代码文本更改为数字,那么您可以使用更窄的仅限数字的条形码。

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 2010-09-18
    • 2012-04-21
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2013-02-22
    • 2015-12-02
    相关资源
    最近更新 更多