将数字转换为较短的Alpha数字.比Base36好

本文关键字:数字 Alpha Base36 转换 | 更新日期: 2023-09-27 18:18:11

我正在生成一个参考编号,这是一个由用户输入的数字。可以是30位左右。

我正在寻找一种方法来缩短值由用户输入,但我需要能够将其转换回原来的数字。

当前base36匝

999999999999999999999999999999 (30 digits)
2OY99WNKL1A848GWKS0G (20 characters)

我可能会把这个连字符加到2OY99-WNKL1-A848G-WKS0G

将数字转换为较短的Alpha数字.比Base36好

假设您正在查看整数作为输入,您显然可以更改为基数36 (10 alpha+ 26个字符)给您的结果。

除此之外,你可以允许上/下,将你的基数扩大到10+52。

如果您允许所有ascii(可能不太漂亮,但应该可以工作),您可能会使用256,因此您可能会减少到15左右。

我可能会选择我满意的100个字符,并简单地将每2个数字转换为该范围内的字符。

下面是一些linqpad代码,将输出144个可打印的字符:

Array values = Enum.GetValues(typeof(ConsoleKey));//.Dump("all values");
var val_list = values.Cast<ConsoleKey>();
var verbose = from value in val_list
    select new {IntVal = (int) value, 
                IntValPrintsAs = (char)value,
                Value=((ConsoleKey) value), 
                Straight = value
                };
verbose.Dump(); 

如果你忽略一些明显的,如退格,它可能会给你一个方向:)