123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- namespace JiaZhiQuan.Common.Utils
- {
- public class Hex62Convertor
- {
- private static string keys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";//编码,可加一些字符也可以实现72,96等任意进制转换,但是有符号数据不直观,会影响阅读。
- private static int exponent = keys.Length;//幂数
- /// <summary>
- /// long value type to 62 string
- /// </summary>
- public static string Long2Str(long value)
- {
- string result = string.Empty;
- do
- {
- long index = value % exponent;
- result = keys[(int)index] + result;
- value = (value - index) / exponent;
- }
- while (value > 0);
- return result;
- }
- /// <summary>
- /// 62 encode string to long
- /// </summary>
- public static long Str2Long(string value)
- {
- long result = 0;
- for (int i = 0; i < value.Length; i++)
- {
- int x = value.Length - i - 1;
- result += keys.IndexOf(value[i]) * Pow(exponent, x);// Math.Pow(exponent, x);
- }
- return result;
- }
- /// <summary>
- /// 一个数据的N次方
- /// </summary>
- private static long Pow(long baseNo, long x)
- {
- long value = 1;////1 will be the result for any number's power 0.任何数的0次方,结果都等于1
- while (x > 0)
- {
- value = value * baseNo;
- x--;
- }
- return value;
- }
- }
- }
|