diff --git a/src/backend/NSExt/Extensions/LongExtensions.cs b/src/backend/NSExt/Extensions/LongExtensions.cs index 6ea66b9..5792e5f 100644 --- a/src/backend/NSExt/Extensions/LongExtensions.cs +++ b/src/backend/NSExt/Extensions/LongExtensions.cs @@ -5,6 +5,8 @@ namespace NSExt.Extensions; /// public static class LongExtensions { + private const string _CHARS_36 = "0123456789abcdefghijklmnopqrstuvwxyz"; + /// /// 判断枚举是否包含某个位 /// @@ -24,6 +26,22 @@ public static class LongExtensions return new Random(Guid.NewGuid().GetHashCode()).NextInt64(me[0], me[1]); } + /// + /// 转36进制 + /// + public static string Sys36(this long me) + { + var ret = new StringBuilder(); + while (me > 35) + { + _ = ret.Insert(0, _CHARS_36[(int)(me % 36)]); + me /= 36; + } + + _ = ret.Insert(0, _CHARS_36[(int)me]); + return ret.ToString(); + } + /// /// 1970毫秒数转换成日期对象 /// diff --git a/src/backend/NSExt/Extensions/StringExtensions.cs b/src/backend/NSExt/Extensions/StringExtensions.cs index c99a60b..1720eb6 100644 --- a/src/backend/NSExt/Extensions/StringExtensions.cs +++ b/src/backend/NSExt/Extensions/StringExtensions.cs @@ -14,7 +14,7 @@ namespace NSExt.Extensions; /// public static partial class StringExtensions { - private const string _CHARACTERS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + private const string _CHARS_62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; private static readonly Regex _regexIpV4 = RegexIpV4(); /// @@ -51,15 +51,43 @@ public static partial class StringExtensions return decrypted.HexDe(); } + /// + /// 将指定的输入字符串进行Base62编码 + /// + public static string Base62(this string me) + { + // Convert string to byte array + var bytes = Encoding.UTF8.GetBytes(me); + + // Convert byte array to BigInteger for easier processing + var bigInteger = new BigInteger(bytes); + + if (bigInteger == 0) + { + return _CHARS_62[0].ToString(); + } + + var result = new StringBuilder(); + + while (bigInteger > 0) + { + var remainder = (int)(bigInteger % 62); + bigInteger /= 62; + _ = result.Insert(0, _CHARS_62[remainder]); + } + + return result.ToString(); + } + /// /// 将指定的输入字符串进行Base62解码 /// /// ArgumentException - public static string Base62Decode(this string me) + public static string Base62De(this string me) { BigInteger result = 0; - foreach (var index in me.Select(c => _CHARACTERS.IndexOf(c))) + foreach (var index in me.Select(c => _CHARS_62.IndexOf(c))) { if (index < 0) { @@ -81,34 +109,6 @@ public static partial class StringExtensions return Encoding.UTF8.GetString(bytes); } - /// - /// 将指定的输入字符串进行Base62编码 - /// - public static string Base62Encode(this string me) - { - // Convert string to byte array - var bytes = Encoding.UTF8.GetBytes(me); - - // Convert byte array to BigInteger for easier processing - var bigInteger = new BigInteger(bytes); - - if (bigInteger == 0) - { - return _CHARACTERS[0].ToString(); - } - - var result = new StringBuilder(); - - while (bigInteger > 0) - { - var remainder = (int)(bigInteger % 62); - bigInteger /= 62; - _ = result.Insert(0, _CHARACTERS[remainder]); - } - - return result.ToString(); - } - /// /// base64编码 ///