Кодирование ulong-значения в string-строку с заданным символьным словарём и обратное декодирование - C#
Формулировка задачи:
Мне необходимо осуществить кодирование ulong-значения в string-строку с заданным символьным словарём и обратное декодирование.
С кодированием ulong-значения в string-строку с заданным символьным словарём я разобралась. Соответствующий код выглядит так.
Листинг программы
- public static string ConvertULongToBaseDictionary(ulong number)
- {
- var validCharacters = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!@#$%";
- char[] charArray = validCharacters.ToCharArray();
- var buffer = new StringBuilder();
- var quotient = number;
- ulong remainder;
- while (quotient != 0)
- {
- remainder = quotient % (ulong)charArray.LongLength;
- quotient = quotient / (ulong)charArray.LongLength;
- buffer.Insert(0, charArray[remainder].ToString());
- }
- return buffer.ToString();
- }
Помогите, пожалуйста, реализовать алгоритм обратного декодирования полученной string-строки с заданным символьным словарём в ulong-значение.
Таким образом, мне нужно в конце концов проверить совпадает ли полученное ulong-значение после декодирования с исходным значением, принятым в качестве исходного при кодировании. Заранее благодарю за помощь.
Можно воспользоваться значением ulong.MaxValue при осуществлении проверки правильности кодирования/декодирования в качестве тестового значения.
Решение задачи: «Кодирование ulong-значения в string-строку с заданным символьным словарём и обратное декодирование»
textual
Листинг программы
- const string chars = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!@#$%";
- public static string ConvertULongToBase(ulong number)
- {
- var buffer = new StringBuilder();
- var quotient = number;
- ulong remainder;
- while (quotient != 0)
- {
- remainder = quotient % (ulong)chars.Length;
- quotient = quotient / (ulong)chars.Length;
- buffer.Insert(0, chars[(int)remainder]);
- }
- return buffer.ToString();
- }
- public static ulong ConvertBaseToULong(string str)
- {
- var mult = 1ul;
- var res = 0ul;
- for (int i = str.Length - 1; i >= 0; i--)
- {
- res += (ulong)chars.IndexOf(str[i]) * mult;
- mult *= (ulong)chars.Length;
- }
- return res;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д