将int转换为6个字符的字母数字字符串的算法

时间:2012-12-04 23:46:04

标签: c# algorithm int

我有一个ID字段,在添加新记录时会自动递增1。我不想按原样使用数字ID,而是将其转换为由0-9A-Z(无小写字母)组成的6个字符的字符串,格式如下:

A00000

数字应从0-9增加到A-Z。

实施例

例如,如果我要对数字7进行编码,则应返回:

A00007

如果我对数字13进行编码,则应返回:

A0000D

如果我对数字36进行编码,则应返回:

A00010

希望这是有道理的。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

建议:将604661760添加到整数值。这是A00000的基数为10的值,被解释为基数为36的数字(= 10 * 36 ^ 5)。

然后将结果编码在基数36中。

根据您的数据范围,您可能希望在添加604661760之前将int提升为long

答案 1 :(得分:1)

您在这里拥有的是从基数10转换为基数36的数字。这是从基数10到基数K的转换算法。修改它以满足您的需求:

http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/toBaseK.html