gpt4 book ai didi

c# - 什么是 Convert-to-Arbitrary-Base C# 函数的高效反转?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:50 24 4
gpt4 key购买 nike

我需要将整数转换为 base64 字符表示形式。我在此线程上使用 OxA3 的答案:Quickest way to convert a base 10 number to any base in .NET?

在给定字符串的情况下,如何反转它以取回我的原始整数?

最佳答案

Joel Mueller's answer应该指导您使用 base-64 大小写。

响应您在 your own answer 中提供的初步代码, 你绝对可以通过改变代码来提高它的效率来完成你的 for 循环正在做的事情(有效的 O(N) IndexOf)来使用散列查找(应该使其成为 O(1))。

我的假设是 baseChars 是您在类的构造函数中初始化的字段。如果这是正确的,请进行以下调整:

private Dictionary<char, int> baseChars;

// I don't know what your class is called.
public MultipleBaseNumberFormatter(IEnumerable<char> baseCharacters)
{
// check for baseCharacters != null and Count > 0

baseChars = baseCharacters
.Select((c, i) => new { Value = c, Index = i })
.ToDictionary(x => x.Value, x => x.Index);
}

然后在您的 StringToInt 方法中:

char next = encodedString[currentChar];

// No enumerating -- we've gone from O(N) to O(1)!
if (!characterIndices.TryGetValue(next, out nextCharIndex))
{
throw new ArgumentException("Input includes illegal characters.");
}

关于c# - 什么是 Convert-to-Arbitrary-Base C# 函数的高效反转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3579970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com