添加base62号码

时间:2015-01-28 14:59:47

标签: c++ c algorithm

说,他们有一个base62号码(字母:[aAbBcC-yYzZ0-9])char *num="abcd"用于创建此类数字的字母表由非字母顺序的字母组成! (' A'在' a'之后' b')

如何获取下一个序列号(如何将1添加到base62号码)?接下来是" abce"以前是" abcc"。如果你向我提供一些代码,我会很感激。

3 个答案:

答案 0 :(得分:2)

如何以N为基础计算等问题的通常最佳答案是

  

从base-N转换为base-2(如果N==2则很简单,很容易   否则),使用闪电般快速,硬件实现的功能   你的计算机在base-2中计算,然后从base-2转换为   基-N

在拒绝我荒谬的建议的同时,考虑一下你的计算机是如何让你误以为它做了算术的基础。

请注意,此方法符合OP的严格指令,以避免将数字转换为基数-10。

答案 1 :(得分:1)

假设您有“数字”的顺序(例如字符串"05DprPaGAg"),那么它很容易。要增加1,找到数字顺序字符串中的字母并获取下一个字母,减少1,找到数字顺序字符串中的字母并获取前一个字母。

如果要减少的数字是最低位数(示例字母表中的0),则减少第二个最低有效位(使用上述方法)并使用最高位数要减少的数字的有效数字。做相反的事情就是增加。

答案 2 :(得分:0)

  1. 将每个字符映射到它所代表的数字(在62中)。

  2. 像手动一样使用简单的添加(如有必要,从最右边的位置开始携带)。

  3. 减法可以几乎相同的方式进行(从最右边的位置开始,如果需要,可以带一个"减去一个"到左边)。