0

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

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

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

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

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

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

4

1 回答 1

2

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

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

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

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

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

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

于 2013-02-05T08:55:15.170 回答