如何在 C# 中将浮点数转换为 Base36,与 JavaScript 的 .toString(36) 相同

5 javascript c# encoding base36

我正在尝试将一些代码转换为 C#(从 JavaScript),我需要通过 C# 将双数(0.04036483168558814)转换为“.toString(36)/Base36”。

JavaScript 代码在这里:

 var num = 0.04036483168558814;
 var n = num.toString(36);
Run Code Online (Sandbox Code Playgroud)

输出(n)如下:

0.1gb9f0lx08ij9wwfwkyk5d0a4i
Run Code Online (Sandbox Code Playgroud)

我需要 C# 的上述相同结果,那么如何在 C# 中获得相同的结果?

我应用了一些代码,但它们不起作用..我的代码如下(由 C# 编写):

1)

string OutputVal = Convert.ToString(Int64.Parse("0.04036483168558814"), 36);
Run Code Online (Sandbox Code Playgroud)

或者

string OutputVal = Convert.ToString(Int64.Parse("0.04036483168558814".Substring(2)), 36);
Run Code Online (Sandbox Code Playgroud)

2)

private const string CharList = "0123456789abcdefghijklmnopqrstuvwxyz";
        public static String Encode(long input)
        {
            if (input < 0) throw new ArgumentOutOfRangeException("input", input, "input cannot be negative");

            char[] clistarr = CharList.ToCharArray();
            var result = new Stack<char>();
            while (input != 0)
            {
                result.Push(clistarr[input % 36]);
                input /= 36;
            }
            return new string(result.ToArray());
        }

string OutputString = Encode(Int64.Parse("0.04036483168558814"));
or
string OutputString = Encode(Int64.Parse("0.04036483168558814".Substring(2)));
Run Code Online (Sandbox Code Playgroud)

Yel*_*yev 5

根据MSDN,您可以使用Convert.ToString方法 将整数转换为以 2、8、10 或 16 为基数的字符串表示形式。

如果要将数字转换为基数 36,您可以使用现有的第三方库:

查看此 CodeProject 文章或此GitHub 项目

或者您可以编写自己的转换器。
例如,此类将整数转换为 Base 36:

public static class Base36Converter
{
    private const int Base = 36;
    private const string Chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    public static string ConvertTo(int value)
    {
        string result = "";

        while (value > 0)
        {
            result = Chars[value % Base] + result; // use StringBuilder for better performance
            value /= Base;
        }

        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,结果将按大端顺序排列。
例如,十进制1296将以10036 为基数。