【发布时间】:2013-02-05 08:35:38
【问题描述】:
我有这种序列码,应该作为条形码打印在身份证上,但问题是这些数字的条形码大于身份证宽度。
- 9913010001CHEREV0215
- 9913010002CHEREV0215
- 9913010003CHEREV0215
- 9913010004CHEREV0215
有没有可能通过使用算法生成固定位数来减少位数,
例如,上面的数字有 20 个字符,使用算法可以减少到 10 个字符。
不仅我需要从上面的条形码(10个字符代码)中反转原始代码(20个字符)。
是否有任何算法可以从 C# 中实现这一点?
【问题讨论】:
-
最好使用较小的条形码字体...(较细的线条 --> 较小的条形码)
-
CHEREV0215部分是否不变?如果是这样,您可以删除它,条形码编号将只是前 10 位数字。 -
需要更多关于您的号码如何变化以及什么是恒定的信息。
-
您可以按照@RB 的建议执行操作,并在代码中查找常量并将其删除。如果您正在寻找一种哈希算法来减小字符串的大小,恐怕它们只是一种方法。因此,尽管它们会减小字符串的大小,但您将无法取回原始字符串,因此这不是一个选择。
-
CHEREV0215 不是常量,而是批处理代码。前两位数字是研究所 ID。然后是时间戳(年/月)和个人身份证号(4位),最后是批号(10位)