Кодирование ulong-значения в string-строку с заданным символьным словарём и обратное декодирование - C#

Узнай цену своей работы

Формулировка задачи:

Мне необходимо осуществить кодирование ulong-значения в string-строку с заданным символьным словарём и обратное декодирование.

С кодированием ulong-значения в string-строку с заданным символьным словарём я разобралась. Соответствующий код выглядит так.
Листинг программы
  1. public static string ConvertULongToBaseDictionary(ulong number)
  2. {
  3. var validCharacters = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!@#$%";
  4. char[] charArray = validCharacters.ToCharArray();
  5. var buffer = new StringBuilder();
  6. var quotient = number;
  7. ulong remainder;
  8. while (quotient != 0)
  9. {
  10. remainder = quotient % (ulong)charArray.LongLength;
  11. quotient = quotient / (ulong)charArray.LongLength;
  12. buffer.Insert(0, charArray[remainder].ToString());
  13. }
  14. return buffer.ToString();
  15. }
А вот с обратным декодированием полученной string-строки с заданным символьным словарём в соответствующее ulong-значение я запуталась.

Помогите, пожалуйста, реализовать алгоритм обратного декодирования полученной string-строки с заданным символьным словарём в ulong-значение.

Таким образом, мне нужно в конце концов проверить совпадает ли полученное ulong-значение после декодирования с исходным значением, принятым в качестве исходного при кодировании. Заранее благодарю за помощь.
Можно воспользоваться значением ulong.MaxValue при осуществлении проверки правильности кодирования/декодирования в качестве тестового значения.

Решение задачи: «Кодирование ulong-значения в string-строку с заданным символьным словарём и обратное декодирование»

textual
Листинг программы
  1.         const string chars = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!@#$%";
  2.  
  3.         public static string ConvertULongToBase(ulong number)
  4.         {
  5.             var buffer = new StringBuilder();
  6.             var quotient = number;
  7.             ulong remainder;
  8.             while (quotient != 0)
  9.             {
  10.                 remainder = quotient % (ulong)chars.Length;
  11.                 quotient = quotient / (ulong)chars.Length;
  12.                 buffer.Insert(0, chars[(int)remainder]);
  13.             }
  14.             return buffer.ToString();
  15.         }
  16.  
  17.         public static ulong ConvertBaseToULong(string str)
  18.         {
  19.             var mult = 1ul;
  20.             var res = 0ul;
  21.             for (int i = str.Length - 1; i >= 0; i--)
  22.             {
  23.                 res += (ulong)chars.IndexOf(str[i]) * mult;
  24.                 mult *= (ulong)chars.Length;
  25.             }
  26.  
  27.             return res;
  28.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы