Кодирование 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д