将数字转换为较短的Alpha数字.比Base36好
本文关键字:数字 Alpha Base36 转换 | 更新日期: 2023-09-27 18:18:11
我正在生成一个参考编号,这是一个由用户输入的数字。可以是30位左右。
我正在寻找一种方法来缩短值由用户输入,但我需要能够将其转换回原来的数字。
当前base36匝
999999999999999999999999999999 (30 digits)
2OY99WNKL1A848GWKS0G (20 characters)
我可能会把这个连字符加到2OY99-WNKL1-A848G-WKS0G
假设您正在查看整数作为输入,您显然可以更改为基数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();
如果你忽略一些明显的,如退格,它可能会给你一个方向:)