我有这种序列码应该作为条形码在身份证上打印,但问题是这些号码的条形码大于身份证的宽度。
是否有可能通过使用算法生成固定位数来减少数字位数,
对于上述数字,有20个字符,使用算法可以减少到10个字符。
不仅需要从上面的条形码(10个字符代码)中反转原始代码(20个字符)。
是否有任何算法可以通过C#实现这一目标?
答案 0 :(得分:2)
条形码背后并没有真正的算法。大多数条形码只是一系列线条,其中每对线条代表一个字符。通常只需使用特殊条形码字体打印文本即可获取条形码。
打印较小:
您可以将其打印得更小,或使用不同类型的条形码。但请注意,并非所有类型的条形码都支持所有这些字符。一些支持整个字母表,而其他人只支持数字。
此外,您可以打印的数量有限。对于大多数条形码,有最小尺寸,最小打印分辨率和需要在条形码周围打开的最小空白量的官方指南。
低于这些限制将影响条形码的可读性,使使用它们的人更难。但是你可以通过移除一毫米或两个高度来逃避,如果你的纸张质量好并且打印分辨率足够高,你可能会稍微减少一点。
减少字符串长度:
减少字符串的长度是可能的,但要记住你cannot shorten every 20 byte string to 10 bytes。如果您对字符串有特定的了解,可以使用它。例如,如果'CHEREV'是一个常量部分,人们可能想知道它是否应该是条形码的一部分。 [编辑]最初我忽略了你说它不是常数的评论。
仅限数字:
字母条形码具有更多字符,因此通常更宽。如果您可以将批处理代码文本更改为数字,那么您可以使用更窄的数字条形码。